單挑Spring!結(jié)果會怎么樣?
哈嘍,大家好,我是了不起。最近啥事兒沒有,真的是只能摸魚了,前幾天摸魚摸出了Java程序員摸魚的時候干點兒啥,今天又摸出了這篇文章~
Java之所以是廣泛使用的編程語言,不僅僅因為其具有跨平臺性、面向?qū)ο蟆⒖煽啃裕€有很重要的一點是強(qiáng)大的生態(tài)系統(tǒng),spring家族的一系列框架,對Java的崛起有著不可忽視的作用。
學(xué)Java的不可能不知道Spring,今天給大家介紹一個號稱springboot的輕量替代框架-Solon,這個框架還是國人開發(fā)的,真是一個單挑spring的男人。
認(rèn)識Solon
Solon是一個參考了Spring Boot和Javalin的設(shè)計而創(chuàng)建的框架。它吸取了這兩者的優(yōu)點并避免了繁重的設(shè)計,使得它能夠支持HTTP、WebSocket和Socket等三種通信信號接入。
Solon只需要2MB的大小就可以支撐完整的MVC開發(fā),并且在啟動方面只需要0.1秒的時間。相比之下,一個普通的Spring Boot MVC項目通常需要起步20MB以上的內(nèi)存占用,并且啟動時間要超過3秒,同時其QPS性能也較弱。
官方介紹:
相比springboot,啟動快 5 ~ 10 倍;qps 高 2~ 3 倍;運行時內(nèi)存節(jié)省 1/3 ~ 1/2;打包可以縮到 1/2 ~ 1/10;同時支持 jdk8, jdk11, jdk17, jdk20, graalvm native。
- 克制、簡潔、高效、開放、生態(tài)
- 支持 JDK8、JDK11、JDK17、JDK20
- Http、WebSocket、Socket 三種信號統(tǒng)一的開發(fā)體驗(俗稱:三源合一)
- 支持“注解”與“手動”兩種模式,按需自由操控
- Not Servlet,可以適配任何基礎(chǔ)通訊框架(最小 0.3m 運行rpc架構(gòu))
- 獨特的 IOC/AOP 容器設(shè)計。不會因為插件變多而啟動變很慢
- 支持 Web、Data、Job、Remoting、Cloud 等任何開發(fā)場景
- 兼顧 Handler + Context 和 Listener + Message 兩種架構(gòu)模式
- 強(qiáng)調(diào)插件式擴(kuò)展,可擴(kuò)展可切換;適應(yīng)不同的應(yīng)用場景
- 支持 GraalVm Native 打包
- 允許業(yè)務(wù)插件“熱插”、“熱拔”、“熱管理”
圖片
solon生態(tài)架構(gòu)圖
官網(wǎng):https://solon.noear.org/
項目地址:https://gitee.com/noear/solon
上手Solon
web開發(fā)的模式和springboot基本一致,但是注解和springboot略有區(qū)別,具體區(qū)別可以看它的官方文檔。
一個重要的區(qū)別是,Solon 不是基于 Servlet 的開發(fā)框架,雖然使用起來與 Springboot 相似的體驗,但內(nèi)部使用 Context 包裝請求上下文(底層為:Context + Handler 架構(gòu))。
創(chuàng)建Maven項目,引入依賴
<parent>
<groupId>org.noear</groupId>
<artifactId>solon-parent</artifactId>
<version>2.3.6</version>
</parent>
<dependencies>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web</artifactId>
</dependency>
</dependencies>
編寫啟動類代碼
@SolonMain
public class App{
public static void main(String[] args){
long start = System.currentTimeMillis();
Solon.start(App.class, args);
long end = System.currentTimeMillis();
System.out.println("啟動耗時:" + (end - start) + "ms");
}
}
編寫Controller
@Controller
public class DemoController {
@Mapping("/hello")
public String hello(String name){
return "Hello " + name;
}
}
運行,測試
圖片
可以看出來,啟動還是非常非常快的
圖片
打包
圖片
啊?只有4kb?
有點兒驚人,為此,我專門去新建了個springboot項目,也是簡單的一個接口,打包
圖片
好吧,這個項目也是4k,看來太簡單的項目看不出來區(qū)別。等以后寫新項目玩兒的時候再試試。
順便測試了一下啟動時間
圖片
啟動時間確實還是 Solon 更快!
小結(jié)
再來看看Solon的官方文檔,文檔寫的很詳細(xì),功能很齊全,Solon的生態(tài)雖然沒有spring那么強(qiáng)大,但小型項目已經(jīng)完全可以勝任。