Solon 是一個輕量的Java基礎開發框架。強調,剋制 + 簡潔 + 開放的原則;力求,更小、更快、更自由的體驗。支援:RPC、REST API、MVC、Job、Micro service、WebSocket、Socket 等多種開發模式。短小而精悍!
Solon Cloud 是一系列的介面標準和配置規範,算是 Solon 的分散式開發套件方案。
快速瞭解Solon的材料:
《Solon 特性簡集,相較於 Springboot 有什麼區別?》
《Solon Cloud 分散式服務開發套件清單,感覺受與 Spring Cloud 的不同》
《Solon 生態外掛清單》,目前已有100多個生態外掛
所謂更小:
核心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,已支援實體驗證)
附:專案地址
附:入門示例
- Solon 入門教程示例:https://gitee.com/noear/solon_demo
- Solon Api 入門教程示例:https://gitee.com/noear/solon_api_demo
- Solon Rpc 入門教程示例:https://gitee.com/noear/solon_rpc_demo
- Solon Auth 入門教程示例:https://gitee.com/noear/solon_auth_demo
- Solon Cloud 入門教程示例:https://gitee.com/noear/solon_cloud_demo
- Solon 進階教程示例:https://gitee.com/noear/solon_advance_demo