Spring Boot 輕量替代框架 Solon 1.3.18 釋出

劉之西東發表於2021-04-03

Solon 是一個微型的Java開發框架。專案從2018年啟動以來,參考過大量前人作品;歷時兩年,4000多次的commit;核心保持0.1m的身材,超高的跑分,良好的使用體驗。支援:RPC、REST API、MVC、WebSocket、Socket 等多種開發模式。

Solon 強調:剋制 + 簡潔 + 開放的原則;力求:更小、更快、更自由的體驗。

替代?那有什麼異同之處?

《Solon 特性簡集,相較於 Springboot 有什麼區別?》

《Solon 的架構筆記》

所謂更小:

核心0.1m,最小開發單位0.2m(相比Dubbo、Springboot專案包,小到可以乎略不計)

所謂更快:

本機helloworld測試,Qps可達12萬之多。可參考:《helloworld_wrk_test

所謂更自由:(程式碼操控自由)

// 除了註解模式之外,還可以按需手動
//
//手動獲取配置(Props 為 Properties 增強版)
Props db = Solon.cfg().getProp("db");

//手動獲取容器裡的Bean
UserService userService = Aop.get(UserService.class);

//手動監聽http post請求
Solon.global().post("/user/update", x-> userService.updateById(x.paramMap()));

//手動新增個RPC服務
Solon.global().add("/rpc/", HelloService.class, true);

//手動獲取一個RPC服務消費端
HelloService helloService = Nami.builder().create(HelloService.class);

本次版本主要變化:

1、增加 luffy-solon-plugin 元件,實現與動態語言混合執行能力

//
// file: resources/luffy/hello.js
//
let name = ctx.param("name");

if(!name){
    name = "world";
}

return `Hello ${name}!`;

// 瀏覽器開啟: http://localhost:8080/hello.js
// Java呼叫:CallUtil.callFile("/hello.js", null);

目前已適配的動態語言

  • python
  • ruby
  • javascript
  • groovy
  • lua
  • graaljs

2、Solon cloud 增加雲端黑白名單介面 CloudListService

//手動應用
//
if(CloudClient.list().inList("blacklist","ip","127.0.0.1")){
    //提示
}

//註解應用
@NotBlanklist
@Mapping("demo1")
public void demo1(){
   //業務處理
}

@Withelist
@Mapping("demo2")
public void demo2(){
  //業務處理
}

3、增加 solon.logging 的異常格式化支援

@Slf4j
public class DemoService{
  public void demo(){
    try{
        //業務處理
    }catch(Exception ex){
        log.error("{}\r\n{}", "error:", ex);
    }
  }
}

4、增加 solon.extend.sessionstate.jwt 元件通過 header 傳輸的支援

附:入門示例

相關文章