對標 Spring Boot & Cloud ,輕量框架 Solon 1.5.2 重要發布


Solon 是一個輕量的Java基礎開發框架。強調,克制 + 簡潔 + 開放的原則;力求,更小、更快、更自由的體驗。支持:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多種開發模式。短小而精悍!

Solon Cloud 是一系列的接口標准和配置規范,算是 Solon 的分布式開發套件方案。

快速了解Solon的材料:

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

《Solon Cloud 分布式服務開發套件清單,感覺受與 Spring Cloud 的不同》

《Solon 的想法與架構筆記》

《Solon 生態插件清單》,目前已有100多個生態插件

《Solon 框架入門系列》

《Solon Aop 特色開發系列》

所謂更小:

內核0.1m,最小的接口開發單位0.2m(相較於 Dubbo、Springboot 的依賴包,小到可以乎略不計)

所謂更快:

本機http 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);

//手動為容器添加組件
Aop.wrapAndPut(DemoService.class);

本次版本主要變化:

1、部分插件名調整

原插件 升級為新插件 原因說明
solon.extend.auth solon.auth 地位升級
solon.extend.data solon.data 地位升級
solon.extend.validation solon.validation 地位升級
solon.extend.jetty.jsp solon.boot.jetty.add.jsp 增加與 solon.boot.jetty 關聯性
solon.extend.jetty.websocket solon.boot.jetty.add.websocket 增加與 solon.boot.jetty 關聯性
solon.extend.undertow.jsp solon.boot.undertow.add.jsp 增加與 solon.boot.undertow 關聯性

2、部分包名調整

原包名 升級為新包名 原因說明
solon.extend.auth.* solon.auth.* 地位升級
solon.extend.validation.* solon.validation.* 地位升級
solon.extend.data.* solon.data.* 地位升級
solon.core.tran.* solon.data.tran.* 轉到 solon.data 統一維護
solon.core.cache.* solon.data.cache.* 轉到 solon.data 統一維護

3、solon.validation 插件其它調整與升級

  • 改動 ValidatorManager,由單例模式改為靜態模式;並對接口做了優化
  • 調整 ValidatorManager::onFailure 更名為 ValidatorManager::setFailureHandler
  • 調整 NoRepeatLock 更名為 NoRepeatSubmitChecker(與其它檢測器統一為Checker的概念)

4、solon.validation 插件增加實體驗證支持(也可切換為jsr303)

示例:

@Valid
@Mapping("/demo2/valid")
@Controller
public class ValidController {
    @NoRepeatSubmit
    @Mapping("nrs")
    public String nrs() {
        return "OK";
    }

    @NotBlank({"val1", "val2"})
    @Mapping("nblank")
    public String nblank(String val1, String val2) {
        return "OK";
    }
    
    @Mapping("bean")
    public String bean(@Validated ValidModel model) {
        return "OK";
    }
}

@Data
public class ValidModel {
    @NotBlank(message = "手機號不能為空")
    private String mobile;

    @NotBlank(message = "密碼不能為空")
    private String password;
}

5、solon.auth 插件增加模板標簽支持

  • 調整 各模板引擎內部接口名稱,顯得更統一些
  • 模板 beetl 增加權限認證標簽支持
  • 模板 enjoy 增加權限認證標簽支持
  • 模板 freemarker 增加權限認證標簽支持
  • 模板 jsp 增加權限認證標簽支持
  • 模板 thymeleaf 增加權限認證標簽支持
  • 模板 velocity 增加權限認證標簽支持

beetl 示例:

<#authPermissions name="user:del">
我有user:del權限
</#authPermissions>

<#authRoles name="admin">
我有admin角色
</#authRoles>

enjoy 示例:

#authPermissions("user:del")
我有user:del權限
#end

#authRoles("admin")
我有admin角色
#end

freemarker 示例:

<@authPermissions name="user:del">
我有user:del權限
</@authPermissions>

<@authRoles name="admin">
我有admin角色
</@authRoles>

6、solon core 的事務與緩存定義接口遷到:solon.data 插件

  • 移動 org.noear.solon.core.cache.CacheService 到 org.noear.solon.data.cache.CacheService
  • 移動 org.noear.solon.core.tran.TranExecutor 到 org.noear.solon.data.tran.TranExecutor
  • 移動 org.noear.solon.core.tran.TranUtils 到 org.noear.solon.data.tran.TranUtils

7、增加 httputils-solon-plugin 插件

這是基於Solon Cloud 注冊發現服務的 HttpUtils 工具,為Rpc客戶端方案外提供一個便宜的服務調用方式。

非常適合k8s和傳統注冊發現服務等不同場景。示例:

String rst = HttpUtils.http("helloservice", "/hello").data("name","noer").post();
System.out.println(rst);

8、請求參數自動轉換日期的格式增加到9種

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
"yyyy-MM-dd HH:mm:ss,SSS"
"yyyy-MM-dd HH:mm:ss.SSS"
"yyyyMMddHHmmssSSSZ"
"yyyy-MM-dd'T'HH:mm:ss"
"yyyy-MM-dd HH:mm:ss"
"yyyy-MM-dd"
"HH:mm:ss"

9、其它

  • 修復加載配置時,值為null會出錯的問題
  • 升級snack3,增加更多的時間處理格式
  • 增加更多的時間處理格式(與snack3同)
  • enjoy 模式,分離 debug 引擎的實例
  • Validator 接口的原函數 validate 更名為 validateOfContext;並增加 validateOfEntity 函數定義(支持實體驗證)
  • solon.extend.jsr303 插件不再自動注入到容器(Solon Validation,已支持實體驗證)

附:項目地址

附:入門示例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM