对标 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文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...
随机推荐
- 解决在Vim中鼠标右键不能粘贴问题
最近维护一台服务器,使用putty登录后,用vim时,鼠标右键不能 粘贴而是进入了visual模式.网上查找一番找到了解决方法: 方 法一:在普通模式下键入" :set mouse-=a&q ...
- WinDBG 调试命令大全
转载收藏于:http://www.cnblogs.com/kekec/archive/2012/12/02/2798020.html #调试命令窗口 ++++++++++++++++++++++++ ...
- Python 爬虫之Scrapy框架
Scrapy框架架构 Scrapy框架介绍: 写一个爬虫,需要做很多的事情.比如:发送网络请求.数据解析.数据存储.反反爬虫机制(更换ip代理.设置请求头等).异步请求等.这些工作如果每次都要自己从零 ...
- web技术培训(二)-Flask后端框架初识
web网站发展至今,特别是服务器端,涉及到的知识.内容,非常广泛.这对程序员的要求会越来越高.如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人 ...
- MarkDown写ppt
首先给你的VSCode安装插件 MarkDown语法 例子 --- marp: true paginate: true theme: default class: - lead - invert si ...
- Nginx如何配置Http、Https、WS、WSS?
写在前面 当今互联网领域,Nginx是使用最多的代理服务器之一,很多大厂在自己的业务系统中都是用了Nginx作为代理服务器.所以,我们有必要了解下Nginx对于Http.Https.WS.WSS的各项 ...
- js--吐血总结最近遇到的变态表单校验---element+原生+jq+easyUI(前端职业生涯见过的最烦的校验)
最近写了无数各种形式的表单,记录下奇奇怪怪的校验规则~ 一:首先是element自带的rules校验规则: element作为常用框架,自带rules属性简单易懂,官方文档一目了然,不再赘述,应付常用 ...
- Pytest自动化测试-简易入门教程(01)
我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢? 难道我学自 ...
- 5.配置IP
静态IP配置 1.NAT模式设置 首先设置虚拟机中NAT模式的选项,打开VMware,点击"编辑"下的"虚拟网络编辑器",设置NAT参数 注意: VMware ...
- vue常见错误
错误集锦 错误一 错误二 原因是写太多的import,修改呈如下方式 错误三 源码如下 原因是没有在return后面添加值 应该为 return false