对标 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 生态插件清单》,目前已有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
对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.2 重要发布的更多相关文章
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.37 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.4.1 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.33 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- Spring Boot & Cloud 轻量替代框架 Solon 1.3.35 发布
Solon 是一个微型的Java开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Micro service.WebSocket. ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.8 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.12 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.4.14 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- 对标 Spring Boot & Cloud ,轻量框架 Solon 1.5.8 发布
Solon 是一个轻量的Java基础开发框架.强调,克制 + 简洁 + 开放的原则:力求,更小.更快.更自由的体验.支持:RPC.REST API.MVC.Job.Micro service.WebS ...
- spring boot / cloud (三) 集成springfox-swagger2构建在线API文档
spring boot / cloud (三) 集成springfox-swagger2构建在线API文档 前言 不能同步更新API文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...
随机推荐
- (翻译)OpenDocument and Open XML security (OpenOffice.org and MS Office 2007)
标题:Open Document 和 Open XML安全性(OpenOffice.org and MS Office 2007) 摘要,OpenDocument 和 Open XML 都是 Offi ...
- 【点分治】2019 首尔 icpc Gene Tree
题目 链接:https://ac.nowcoder.com/acm/contest/15644/B来源:牛客网 A gene tree is a tree showing the evolution ...
- 微信小程序中的常见弹框
显示加载中的提示框 wx.showLoading() 当我们正在在进行网络请求时,常常就需要这个提示框 手动调用wx.hideLoading()方法才能够关闭这个提示框,通常在数据请求完毕时就应该关闭 ...
- SE_WorkX_提问回顾与个人总结
项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:正所谓"实践是认识的来源.目的.动力以及检验认识真理性的唯一标准",在经历了一个学期的学习和实践后,请大家写一 ...
- [bug] Openresty:content_by_lua_file 404
参考 http://www.javaear.com/question/28087228.html https://github.com/openresty/openresty.org/issues/1 ...
- Qt - QLineEdit编辑框
QLineEdit输入内容获取及合理性检查? 控件自带触发信息: void textChanged(const QString &);void textEdited(const QString ...
- 关于jmeter线程组和循环次数的设置
初始设置:设置线程数 n = 80,循环次数a = 1,ramp-up period=5 一 计算最后一个线程的生成时间(last) 总共生成80个线程,总共需要5秒,每秒钟会启动16个线程,所以,第 ...
- Zabbix 架构
Zabbix 架构 1.Zabbix Server Zabblx server是agent程序报告系统可用性.系统完整性和统计数据的核心组件,是所有配置信息.统计信息和操作数据的核心存储器. 2.Za ...
- CentOS下cpu分析 top
CentOS下 cpu 分析-top 时间:2017-03-20 12:09来源:linux.it.net.cn 作者:IT 一. 前言 我们都知道windows下对各个运行的任务,要通过任务管理 ...
- Linux服务之DNS服务篇
一.DNS服务概述 DNS(Domain Name System)域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务. DNS 是一个分布式数据库,命名系统采用层次的逻 ...