一個更現代感的 Java "生態型"應用開發框架:更快、更小、更自由。不是 Spring,沒有 Servlet,也無關 JavaEE;新興獨立的輕量生態 (已有150來個生態外掛) 。主框架僅 0.1 MB。
相對於 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(@Param(defaultValue = "java") String name) {
return String.format("Hello %s!", name);
}
}
入門探索影片(使用者錄製):
本次更新:
- 修復 solon.test :: @TestRollback 事務回滾壞掉的問題(v1.12.0 出現的)
- 增加 sa-token 攔截的新適配方式,舊的標為棄用。
@Configuration
public class Config {
@Bean(index = -100) //-100,是順序位(低值優先)
public void tokenPathInterceptor() {
return new SaTokenInterceptor()....;
}
}
詳見:https://solon.noear.org/article/110
- 增加 sa-token-dao json 序列化適配(現在有 base64 + json)
- 增加 RouterInterceptor::postResult 介面(即可以修改返回結果)
@Component
public class GlobalTransInterceptor implements RouterInterceptor {
@Inject
private TransService transService;
@Override
public void doIntercept(Context ctx, Handler mainHandler, RouterInterceptorChain chain) throws Throwable {
chain.doIntercept(ctx, mainHandler);
}
@Override
public Object postResult(Context ctx, Object result) throws Throwable {
//此處為攔截處理
if (result != null && !(result instanceof Throwable) && ctx.action() != null) {
result = transService.transOneLoop(result, true);
}
return result;
}
}
詳見:https://solon.noear.org/article/242
- 增加 solon.serialization 所有 json 外掛的統一快捷配置支援
solon.serialization.json:
dateAsFormat: 'yyyy-MM-dd HH:mm:ss' #配置日期格式(預設輸出為時間戳)
dateAsTimeZone: 'GMT+8' #配置時區
dateAsTicks: false #將date轉為毫秒數(和 dateAsFormat 二選一)
longAsString: true #將long型轉為字串輸出 (預設為false)
boolAsInt: false #將bool型轉為字串輸出 (預設為false)
nullStringAsEmpty: false
nullBoolAsFalse: false
nullNumberAsZero: false
nullArrayAsEmpty: false
nullAsWriteable: false #輸出所有null值
詳見:https://solon.noear.org/article/94
- 調整 安全停止時由 403 改為 503 狀態碼
solon.app.safeStop=1
詳見:https://solon.noear.org/article/412
- 升級 snack3 為 3.2.52
- 升級 dbvisitor 為 5.2.0
- 升級 fastjson2 為 2.0.23