Springboot min -Solon 詳解系列文章:
Springboot mini - Solon詳解(一)- 快速入門
Springboot mini - Solon詳解(二)- Solon的核心
Springboot mini - Solon詳解(三)- Solon的web開發
一、Springboot min -Solon
最近號稱 Springboot mini 的 Solon框架,得空搞了一把,發覺Solon確實好用,小巧而快速。那Solon到底是什麼,又是怎麼好用呢?
什麼是Solon?
Solon是參考Spring boot 和 Javalin 而設計。吸取了兩者的的優點,避開了很多繁重的設計,使其支援http, websocket, socket 三種通訊訊號接入。Solon 2M即可支撐起普通的mvc開發了,0.1秒就可以完成啟動;相對於言,Spring boot 的一個普通mvc專案,基本上20M起步,啟動要3秒以上,而且qps也弱了很多。
總體來說,Solon 有著類似於 Spring boot的開發體驗;故而號稱Springboot mini。
專案原始碼:https://gitee.com/noear/solon
Solon的優缺點
優點
- 更小、更快、更自由
- 支援註解與手動兩種控制模式,自由切換
- 自帶IOC & AOP容器,支援MVC
- 採用Handler + Context 架構;強調外掛式擴充套件
- 統一Http(支援 Servlet 或 NoServlet),WebSocket,Socket三種訊號接入
- 外掛可擴充套件可切換:啟動外掛,擴充套件外掛,序列化外掛,資料外掛,會話狀態外掛,檢視外掛(可共存) 等...
- 體驗與Spring boot相近,遷移成本低
缺點
- 新框架的通病,文件相對較少
- 第三方專案的適配較少
二、快速入門
1、Solon的Java bean配置方式
使用Solon,可以零配置就讓你的專案快速執行起來,完全使用程式碼和註解取代配置。使用java程式碼方式可以更好的理解你配置的Bean,下面就先來看看兩個最基本的註釋:
1)@Configuration + @Bean 方式
Solon 的java配置方式是通過@Configuration 和 @Bean這兩個註釋實現的(沒有xml方案):
@Configuration
public class SolonConfig {
@Bean
public UserDao getUserDao() {
return new UserDao();
}
}
2)@Component
該示例將通過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模式。
2、第一個Web應用
通過上面的示例,我們已經知道了Solon的java配置方式是怎麼回事了,那接下來便正式開始使用Solon來開發我們的第一個web應用了.
1)pom.xml配置
設定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就配置完畢了,是相當簡潔的呢?
2)小示例
@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的高效和簡潔了?配置就是如此簡單,功能就是如此強大,但通過上面一系列的講解,是不是也會產生一些疑惑呢,比如:
- Solon啟動的過程,都幹了啥?
- WEB應用的預設埠就是8080,那這個埠要怎麼修改呢?
- 我們自定義的配置要如何讀出來?
- 頁面重定向用什麼介面?
- 等等...
淡定,後續文章將會對一些常見的問題展開說明。
附:Solon專案地址
- gitee: https://gitee.com/noear/solon
- github: https://github.com/noear/solon