对标 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文档会有什么问题? 理想情况下,为所开发的服务编写接口文档,能提高与 ...
随机推荐
- SQLServer数据库及注入方法
目录 SQLServer数据库 SQLServer数据库的查询语句 SA权限开启xp_cmdshell获取主机权限 盲注SQLServer数据库 SQLServer数据库 SQL Server数据库是 ...
- Redis笔记整理
Redis 遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库.数据结构服务器. 特点: 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时 ...
- 一个或多个筛选器或者Listeners启动失败
问题描述 运行ssm项目,tomcat启动后报下面的错误. org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启 ...
- Spring Boot集成sharding-jdbc实现分库分表
一.水平分割 1.水平分库 1).概念:以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中.2).结果每个库的结构都一样:数据都不一样:所有库的并集是全量数据: 2.水平分表 1).概念以字段 ...
- thinkphp 5中的混合查询
1.手册样例thinkphp 5.0Db::table('think_user') ->where('name',['like','thinkphp%'],['like','%thinkphp' ...
- Raspberry PI 4B 安装和配置 Raspbian
做记录,以备之后需要,待完成中 目录 做记录,以备之后需要,待完成中 下载镜像和安装程序 ssh 远程访问 下载镜像和安装程序 Raspbian: installer: ssh 远程访问 开启ssh ...
- js 实现 bind 的这五层,你在第几层?
最近在帮朋友复习 JS 相关的基础知识,遇到不会的问题,她就会来问我. 这不是很简单?三下五除二,分分钟解决. function bind(fn, obj, ...arr) { return fn.a ...
- c语言编程学习之二维数组
二维数组 c语言按照行主序存储二维数组.也就是说,二维数组元素在内存中的位置是连续的,每行末尾元素(若不是最后一行)的下一个元素就是下一行的首元素. 如下图所示 接下来我们来分析一下如何将二维数组所有 ...
- [linux] Git基本概念&操作
1.基本概念 版本控制系统:一种软体工程技巧,籍以在开发的过程中,确保由不同人所编写的同一项目代码都得到更新.并追踪.记录整个开发过程. 集中式(SVN)/ 分布式(GIT)版本控制系统:SVN的版本 ...
- sed常用
行首添加字符串 # cat a [root@localhost b]# vim a 文件a将每行的第1列添加HEAD [root@localhost b]# sed 's/^/HEAD &/g ...