Solon 是一個微型的Java開發框架。專案從2018年啟動以來,參考過大量前人作品;歷時兩年,4000多次的commit;核心保持0.1m的身材,超高的跑分,良好的使用體驗。支援:RPC、REST API、MVC、WebSocket、Socket 等多種開發模式。
Solon 強調:剋制 + 簡潔 + 開放的原則;力求:更小、更快、更自由的體驗。
替代?那有什麼異同之處?
《Solon 特性簡集,相較於 Springboot 有什麼區別?》
所謂更小:
核心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);
}
}
}