Jboot發佈啦html
Jboot是什麼呢?mysql
詳情地址地址:https://git.oschina.net/fuhai/jbootgit
jboot是一個類型springboot的開源框架,基於jfinal和undertow等很是優秀的、已經在商業項目中應用多年的、有良好口碑的、性能很是不出的諸多框架開發而成。spring
Jboot是一個新的輪子,可是是集你們之所長的一個極度好用的輪子。sql
如何使用Jboot呢?數據庫
<dependency> <groupId>io.jboot</groupId> <artifactId>jboot</artifactId> <version>1.0-alpha3</version> </dependency>
廢話,都低coding都支持什麼樣的coding,有什麼樣的好處呢?api
咱們從幾個方面來看:瀏覽器
@RequestMapping("/") public class MyController extend JbootController{ public void index(){ renderText("hello jboot"); } public static void main(String [] args){ Jboot.run(args); } }
啓動main方法,而後訪問 http://127.0.0.1:8088,而後你就能看到瀏覽器輸出:hello jboot.緩存
怎麼樣?是否極度簡單呢?springboot
咱們繼續.
表結構:
CREATE TABLE `user` ( | |
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, | |
`login_name` varchar(32) DEFAULT NULL, | |
`password` varchar(32) DEFAULT NULL, | |
PRIMARY KEY (`id`) | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; |
在resources下建立jboot.properties文件,並配置以下:
jboot.datasource.type=mysql | |
jboot.datasource.url=jdbc:mysql://127.0.0.1:3306/jbootdemo | |
jboot.datasource.user=root | |
jboot.datasource.password= |
而後簡單改造下剛纔的controller:
@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); } }
由於咱們用到了html,因此咱們在resource下創建一個index.html來渲染數據。html的內容以下:
<html > <head> <meta charset="UTF-8"> <title>users</title> </head> <body> #for(user : users) #(user.login_name)<br /> #end </body> </html>
啓動main方法,訪問頁面後,頁面顯示了數據庫列表的數據。
OK,實際上這些都是小case,來個複雜的。
微服務是什麼呢?在大型的系統裏面,好比京東。實際上有不少個「項目」組成的,每一個「項目」均可以理解爲一個服務,把大型的項目拆分紅多個微小的服務就是微服務了。
微服務有什麼好處呢?你們能夠試想一下,若是咱們把全部的功能都寫在一個「項目」裏面,若是說其中一個小模塊除了點問題,咱們從新升級這個小模塊,那就須要咱們對整個項目從新部署,這個過程當中可能就會中斷服務。
好比說,京東的快遞查詢模塊出現問題了,不願能由於升級而重啓整個京東網站。
這個時候就只能把每一個模塊都作成一個「項目」或者叫「服務」。
可是這個時候,京東網想要去讀取這個「項目」的數據,怎麼辦呢?咱們可讓這個項目提供一個api接口,而後讓須要這個數據的項目去調用這個接口。
可是,這樣仍是很麻煩。
在衆多的項目中,都使用到了一種技術,叫RPC,也就是remote procedure call的簡寫。翻譯過來叫遠程過程調用,再簡單點就理解爲「遠程調用」好了,
也就是咱們在咱們的項目裏,只要調用 xxx.aaa() 這樣,就調用到了遠程服務器的 aaa() 方法了。
RPC的開源框架,市面上有不少,好比google的grpc,tiwtter的thirft,淘寶的dubbo,新浪的motan。
Jboot集成了 grpc、thirft和motan(爲何不要dubbo呢?由於好幾年沒維護了),因此在jboot中使用rpc,極致、簡單、爽!
首先須要咱們定義個接口,接口中不要有任何的實現。代碼以下:
public interface HelloService { public String hello(String name); }
而後只須要咱們在項目A中,寫咱們本身的一個類,實現這個接口,通常叫service類。代碼以下:
@JbootrpcService public class myHelloServiceImpl implements HelloService { public String hello(String name){ System.out.println("hello" + name); return "hello ok"; } }
注意:在實現類中添加@JbootrpcService註解。
而後在咱們的另個項目,暫且叫項目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.registryType = consul jboot.rpc.registryAddress = 127.0.0.1:8500
下載consul到本地計算機,而後執行命令
consul -agent dev
注:consul 下載地址 http://consul.io
一旦涉及到微服務,更多的只是好包括瞭如何防止微服務雪崩、如何對爲輔的調用統計、如何對微服務的跟蹤,若是對微服務的路由,這些實際上Jboot已經支持,可是並不是這篇文字能寫的完的了。
實際上、Jboot同樣支持類型spring的ioc和aop,支持了衆多的mq(activeMQ、rabbitMQ,阿里雲商業MQ等等)和 良好的緩存機制、事件機制等等等等。
更多功能,等你來發現了...
Jboot 開源地址:https://git.oschina.net/fuhai/jboot
我是某上市公司的CTO,以上是個人我的微公衆號,常常分享技術心得和生活感悟,歡迎勾搭。