本次更新最重要的是增加了 Solon APT 專案,為更簡單的完成 Graalvm Native 打包提供了幫助;其次是增加了 @ProxyComponent 和 @SolonMain 註解;以及最佳化了 Solon Bean 的生命週期。
簡介:
Solon 是一個高效的應用開發框架:更快、更小、更簡單。生態情況包括:
- 150 來個能力擴充套件外掛
- 支援 Java、Kotlin、Groovy 三種語言開箱即用的特性
- 官網 、 交流群,以及技術支援
- Solon Initializr
- 使用者落地的開源或商業專案
Solon 的生產力價值:
- 更快、更小。帶來IT成本、運維成本下降
- 更簡單。節省人力成本
Solon 的國產性:
- Solon 在通訊框架、基礎框架、能力框架,等方面提供了完整"國產"的方案支援。(Java 不是國產?這個沒法了)
150來個生態外掛,覆蓋各種不同的應用開發場景:
相對於 Spring Boot 和 Spring Cloud 的專案:
- 啟動快 5 ~ 10 倍。 (更快)
- qps 高 2~ 3 倍。 (更高)
- 執行時記憶體節省 1/3 ~ 1/2。 (更少)
- 打包可以縮小到 1/2 ~ 1/10;比如,300Mb 的變成了 23Mb。 (更小)
- 同時支援 jdk8, jdk11, jdk17, jdk19。
似曾相似的體驗,入門更簡單,遷移很方便:
@Controller
public class App {
public static void main(String[] args) {
Solon.start(App.class, args, app->{
//手寫模式
app.get("/", ctx -> ctx.outputAsJson("{message:'Hello world!'}"))
});
}
//註解模式
@Get
@Socket
@Mapping("/hello")
public String hello(String name) {
return String.format("Hello %s!", name);
}
}
入門探索影片(使用者錄製):
本次更新:
- 新增 solon.proxy 外掛
- 新增 solon.proxy.apt 外掛
- 新增 solon.graalvm 外掛
- 新增 solon.graalvm.apt 外掛
- 新增 solon.view 外掛,為所有影片外掛提供公共的配置和工具幫助
- 調整 mybatis-solon-plugin 外掛,取消 mappers 檢測異常,改為警告日誌
- 調整 captcha-solon-plugin 外掛,延遲內部 Bean 的構建時機
- 調整 BeanInvocationHandler 內部程式碼,簡化並增加 AptProxy 呼叫
- 調整 dateAsFormat 配置增加對 LocalDate 和 LocalDateTime 的支援
- 調整 Plugin::Init 標為棄用, 並由 InitializingBean 介面接替
- 調整 Plugin 介面不再做為元件形態,有生命週期需求的可改為 LifecycleBean 介面
- 調整 Plugin Spi 例項化改為 Bean 模式,之前為不能注入的 New 模式
- 調整 AopContext 標註 beanOnloaded 為棄用。事件概念調整為容器內部的生命週期概念
- 調整 AopContext 增加 start(),stop(),lifecycle() 介面;強化生命週期管理概念
- 調整 Lifecycle 增加可異常選擇,並標註 @FunctionalInterface
- 調整 調整打包時主函式的提示資訊
- 增加 模板對 templates 目錄的支援
- 增加 SerializationConfig,為渲染器提供統一的配置幫助
- 增加 ContextPathFilter 與 cfg().serverContextPath 配置同步
- 增加 應用屬性配置內部引用增加預設值支援及環境變數引用
- 增加 @ProxyComponent 註解,使用時強依賴於 solon.proxy 外掛
- 增加 @SolonMain 主解,作為 apt 生成 Graalvm Native 元資訊配置的入口
- 增加 apt 代理實現方式(做為 asm 實現的補充),為全功能實現 Graalvm Native 打包提供支援
- 增加 InitializingBean 介面
- 增加 LifecycleBean 介面,擴充套件自 InitializingBean 和 Lifecycle
- 增加 ClassUtil 工具類
- sqltoy 升級為 5.2.37