jboot是一個基於jfinal、undertow開發的一個類似springboot的開源框架, 我們已經在正式的商業上線項目中使用。她集成了代碼生成,微服務,MQ,RPC,監控等功能, 開發者使用及其簡單。
一,和mvc交互
step1:Maven依賴
- <dependency>
- <groupId>io.jboot</groupId>
- <artifactId>jboot</artifactId>
- <version>1.0</version>
- </dependency>
@RequestMapping("/") public class MyController extend JbootController{ public void index(){ renderText("hello jboot"); } }step 3:啓動(訪問 http://127.0.0.1:8088,然後你就能看到瀏覽器輸出:hello jboot.)
public class MyStarter{ public static void main(String [] args){ Jboot.run(args); } }二,數據庫交互
step 1:表結構
step 2:jboot.properties
step3:定義一個service接口
public interface HelloService { public String hello(String name); }step4:serviceimpl來實現這個接口
@JbootrpcService public class myHelloServiceImpl implements HelloService { public String hello(String name){ System.out.println("hello" + name); return "hello ok"; } }step5:服務器傳參數回調或者在controller中操作
HelloService service = Jboot.service(HelloService.class); service.hello("michael");
public class MyController extends bootController{ @JbootrpcService HelloService service ; public void index(){ renderText("hello " + service.hello()); } }step 6:還可以進行如下操作
@RequestMapping("/")
public class MyController extend JbootController{
public void index(){
List<Record> records = Db.find("select * from `user`");
setAttr("users",records);
render("index.html");
}
public static void main(String [] args){
Jboot.run(args);
}
}
step7:因爲我們用到了html,所以我們要在resource下面建一個html來對接
<html >
<head>
<meta charset="UTF-8">
<title>users</title>
</head>
<body>
#for(user : users)
#(user.login_name)<br />
#end
</body>
</html>
三,下面來說說微服務到底是個啥?
微服務是什麼呢?在大型的系統裏面,比如京東。實際上有很多個“項目”組成的,每個“項目”都可以理解爲一個服務,把大型的項目拆分成多個微小的服務就是微服務了。
微服務有什麼好處呢?大家可以試想一下,如果我們把所有的功能都寫在一個“項目”裏面,如果說其中一個小模塊除了點問題,我們重新升級這個小模塊,那就需要我們對整個項目重新部署,這個過程中可能就會中斷服務。
比如說,京東的快遞查詢模塊出現問題了,不肯能因爲升級而重啓整個京東網站。
這個時候就只能把每個模塊都做成一個“項目”或者叫“服務”。
但是這個時候,京東網想要去讀取這個“項目”的數據,怎麼辦呢?我們可以讓這個項目提供一個api接口,然後讓需要這個數據的項目去調用這個接口。
但是,這樣還是很麻煩。
在衆多的項目中,都使用到了一種技術,叫RPC,也就是remote procedure call的簡寫。翻譯過來叫遠程過程調用,再簡單點就理解爲“遠程調用”好了,
也就是我們在我們的項目裏,只要調用 xxx.aaa() 這樣,就調用到了遠程服務器的 aaa() 方法了。
RPC的開源框架,市面上有很多,比如google的grpc,tiwtter的thirft,淘寶的dubbo,新浪的motan。
Jboot集成了 grpc、thirft和motan(爲什麼不要dubbo呢?因爲好幾年沒維護了),所以在jboot中使用rpc,極致、簡單、爽!
step 1:首先需要我們定義個接口,接口中不要有任何的實現。代碼如下:
pubic interface helloService{
public String hello(String name);
}
step 2:讓後在我們的項目a中定義自己的類來實現這個接口,一般都叫做service類
@JbootrpcService
Public class myHelloServiceImpl implements helloService{
public String hello(String name){
system.out.println("hello"+name);return "hello ok";
};
}
step 3:然後在我們的另外一個項目 b中代碼如下:
public class MyController extends bootController{
@JbootrpcService
HelloService service ;
public void index(){
renderText("hello " +service.hello());
}
}
總結:定義個HelloService接口,也是用@JbootrpcService註解,就可以爽快在在項目B中調用項目A的接口了
當然還需要給jboot做一個簡單的配置
jboot.rpc.type=motan
jboot.rpc.registryTpye=consul
jboot.rpc.registryAddress=120.0.0.1:8500
下載到本地計算機,然後執行命令
consul -agent dev
注意:consul下載地址:http://consul.io
實際上、Jboot一樣支持類型spring的ioc和aop,支持了衆多的mq(activeMQ、rabbitMQ,阿里雲商業MQ等等)和
良好的緩存機制、事件機制等等等等。
Jboot
開源地址:https://git.oschina.net/fuhai/jboot