天天看點

Java 生态的超新星燃燃升起。Solon v2.4.0 釋出

作者:noear

Solon 是什麼開源項目?

一個,Java 新的生态型應用開發架構。它從零開始建構,有自己的标準規範與開放生态(曆時五年,已有全球第二級别的生态規模)。與其他架構相比,它解決了兩個重要的痛點:啟動慢,費記憶體。

關鍵記事:

  • 2021年1月,正式對外開源
  • 2022年7月,建立官網,發力推廣
  • 2023年2月,v2.0 釋出。官網增加 Solon Initializr,用于生成項目模闆。
  • 2023年4月,成為信通院可信開源社群、可信開源項目。Maven 單月下載下傳量突破100萬。代碼送出數超 11000 次
  • 2023年6月,Maven 單月下載下傳量突破200萬。官網資料超 500 個頁面。

解決痛點?

由于Solon Bean容器的獨特設計,不會因為擴充依賴變多而啟動很慢(開發調試時,省時、爽快)!以知名開源項目“小諾”為例:

  • “snowy-spring 版” 啟動 15-50秒
  • “snowy-solon 版” 啟動3-5秒,記憶體節省1/3(有興趣的,歡迎拉取代碼體驗)

所謂:“時間就是生命,效率就是金錢”,“天下武功,唯快不破”。

相對于 Spring Boot 和 Spring Cloud 的項目,有什麼特點?

  • 啟動快 5 ~ 10 倍。 (更快)
  • qps 高 2~ 3 倍。 (更高)
  • 運作時記憶體節省 1/3 ~ 1/2。 (更少)
  • 打包可以縮小到 1/2 ~ 1/10;比如,300Mb 的變成了 23Mb。 (更小)
  • 同時支援 jdk8, jdk11, jdk17, jdk20, graalvm native image

本次更新了什麼?

  • 新增 solon-openapi2-knife4j 插件,替代 solon-swagger2-knife4j
  • 增加 server.socket.ssl.* 配置
  • 增加 server.websocket.ssl.* 配置
  • 增加 Context::isSecure 接口
  • 增加 ChainManager::defExecuteHandler 接口
  • 增加 ChainManager 對 SessionStateFactory 的管理,原管理方式移除
  • 增加 @Header String[] xxx 注入支援
  • 增加 Converter 體系,一般用于基礎類型的通用轉換
  • 增加 日志服務孵化機制,可在列印前進行完成格式配置
  • 增加 solon.boot.socketd.netty 插件對 ssl 的支援
  • 增加 solon.boot.websocket.netty 插件對 ssl 的支援
  • 優化 RouterListener 取消自己的線程池,改用 RunUtil
  • 優化 JsonConverter 标為棄用,統一由 Converter 替代
  • 優化 SocketChannelBase 标為棄用,統一由 ChannelBase 替代
  • 優化 ResourceUtil 的根路徑相容性
  • 優化 @Init 注解邏輯,僅對原始執行個體有效。保持與 LifecycleBean 相同政策
  • 優化 solon.boot.smarthttp 的 ws 适配
  • 優化 nacos2-solon-cloud-plugin 的适配,統一 jackson 版本
  • 優化 nacos-solon-cloud-plugin 的适配,統一 jackson 版本
  • 優化 LogUtil 擴充方式,改為靜态擴充方式,原手動方式标為棄用
  • 優化 Context::headerValues() 傳回類型為 String[]
  • 優化 Context::paramValues() 統一 server 相關處理邏輯
  • 優化 統一 request 參數與實體字段的注入轉換機制,并增加自定義轉換機制
  • 優化 核心日志列印順序,由 SolonApp 執行個體化後再列印。以便日志格式配置先加載
  • 優化 當使用 http ssl 時,服務啟動列印為 https 位址
  • 優化 ActionExecuteHandlerDefault::changeBody 參數結構,友善不同的序列化方案處理
  • 優化 Nami 編碼器比對政策及頭同步政策,尤其是僅單編碼包引入時
  • 優化 AbstractRoutingDataSource 的關閉處理
  • 優化 ShardingDataSource 增加 Closeable 接口支援
  • 調整 beetlsql-solon-plugin 插件,DbConnectionSource 改為公有,調整包結構
  • 修複 solon-swagger2-knife4j 插件,遞歸類型的資料模型會棧溢出的問題
  • 修複 solon-swagger2-knife4j 插件,相同 path 不能顯示多個 method 的問題
  • 修複 solon-swagger2-knife4j 插件,List<Demo> 風格參數,不能正常建構 json 示例
  • 修複 solon-swagger2-knife4j 插件,Page<Demo>、Result<Page<Demo>> 等複雜嵌套的臨時模型,不能正常建構 json 示例
  • dbvisitor 升為 5.3.3
  • mybatis-flex 升為 1.5.1
  • sqltoy 升為 5.2.59
  • fastmybatis 升為 2.8.1
  • bean-searcher 升為 4.2.2
  • liteflow 升為 2.10.5
  • beetl 升為 3.15.7.RELEASE
  • beetlsql 升為 3.23.4-RELEASE
  • smarthttp 升為 1.2.8
  • fastjson2 升為 2.0.35

項目倉庫位址?

  • gitee:https://gitee.com/noear/solon
  • github:https://github.com/noear/solon