jBoot小總

jboot是一個基於jfinal、undertow開發的一個類似springboot的開源框架, 我們已經在正式的商業上線項目中使用。她集成了代碼生成,微服務,MQ,RPC,監控等功能, 開發者使用及其簡單。

一,和mvc交互

step1:Maven依賴

  1. <dependency>
  2.     <groupId>io.jboot</groupId>
  3.     <artifactId>jboot</artifactId>
  4.     <version>1.0</version>
  5. </dependency>
step2:new a controller(spring MVC)

@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









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章