Solon v2.2.1 釋出。向 Graalvm Native 友好靠近

2023-03-04 06:00:25

本次更新最重要的是增加了 Solon APT 專案,為更簡單的完成 Graalvm Native 打包提供了幫助;其次是增加了 @ProxyComponent 和 @SolonMain 註解;以及優化了 Solon Bean 的生命週期

簡介:

Solon 是一個高效的應用開發框架:更快、更小、更簡單。生態情況包括:

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);
    }
}

入門探索視訊(使用者錄製):

《bilibili - solon 入門探索》

本次更新:

  • 新增 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

專案倉庫:

專案官網: