Springboot min -Solon 詳解系列文章:
Springboot mini - Solon詳解(一)- 快速入門
Springboot mini - Solon詳解(二)- Solon的核心
Springboot mini - Solon詳解(三)- Solon的web開發html
最近號稱 Springboot mini 的 Solon框架,得空搞了一把,發覺Solon確實好用,小巧而快速。那Solon究竟是什麼,又是怎麼好用呢?java
Solon是參考Spring boot 和 Javalin 而設計。吸收了二者的的優勢,避開了不少繁重的設計,使其支持http, websocket, socket 三種通信信號接入。Solon 2M便可支撐起普通的mvc開發了,0.1秒就能夠完成啓動;相對於言,Spring boot 的一個普通mvc項目,基本上20M起步,啓動要3秒以上,並且qps也弱了不少。git
整體來講,Solon 有着相似於 Spring boot的開發體驗;故而號稱Springboot mini。github
項目源碼:https://gitee.com/noear/solonweb
優勢spring
缺點數據庫
使用Solon,能夠零配置就讓你的項目快速運行起來,徹底使用代碼和註解取代配置。使用java代碼方式能夠更好的理解你配置的Bean,下面就先來看看兩個最基本的註釋:springboot
Solon 的java配置方式是經過@Configuration 和 @Bean這兩個註釋實現的(沒有xml方案):websocket
@Configuration public class SolonConfig { @Bean public UserDao getUserDao() { return new UserDao(); } }
該示例將經過java配置方式配置Component,實現Solon IOC功能。架構
下面是一個簡單的模擬從數據庫獲取User數據的Dao類(使用了@Component註解,說明它將交給Solon容器管理)。
@Component public class UserDao { public List<String> queryUserList() { //爲省事兒,此處不操做數據庫 List<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { list.add("User " + i); } return list; } }
而後是一個最最多見的Service,經過注入UserDao,使用UserDao的方法獲取用戶數據。
@Component public class UserService { @Inject UserDao userDao; public void getUserList() { List<String> list = userDao.queryUserList(); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
接下來就是啓動Solon的容器服務, 而後從容器中拿到UserService,並調用其獲取用戶數據的方法,代碼以下:
public class Test { public static void main(String[] args) { //啓動容器服務 Solon.start(Test.class, args); //或經過Aop對象獲取託管的Bean(或者註解方式) // UserService userService = Aop.get(UserService.class); userService.getUserList(); } }
像普通的java程序同樣,直接運行Test類中的main方法便可在控制檯看到用戶數據輸出了。
能夠發現和以往的Spring boot 很像;又有點不同,尤爲是手寫AOP模式。
經過上面的示例,咱們已經知道了Solon的java配置方式是怎麼回事了,那接下來便正式開始使用Solon來開發咱們的第一個web應用了.
設置solon的parent
<parent> <groupId>org.noear</groupId> <artifactId>solon-parent</artifactId> <version>1.2.8</version> </parent>
設置solon的parent配置不是必須的,但包含了大量默認的配置,可簡化咱們的開發。
導入solon的web支持
<dependency> <groupId>org.noear</groupId> <artifactId>solon-web</artifactId> <type>pom</type> </dependency>
經過上面簡單的2步配置,Solon就配置完畢了,是至關簡潔的呢?
@Controller //這標明是一個solon的控制器 public class HelloApp { public static void main(String[] args) { //這是程序入口 Solon.start(HelloApp.class, args); } @Mapping("/hello") public String hello(String name){ return "Hello world!"; } }
Solon 程序的重點是要:在main函數的入口處,經過 Solon.start(...) 啓動Solon的容器服務,進而啓動它的全部機能。
運行HelloApp中的main()方法,啓動該web應用後,在地址欄輸入"http://localhost:8080/hello",就能夠看到輸出結果了。
Hello world!
到這裏是否是已經大概感受到了Solon的高效和簡潔了?配置就是如此簡單,功能就是如此強大,但經過上面一系列的講解,是否是也會產生一些疑惑呢,好比:
淡定,後續文章將會對一些常見的問題展開說明。