拓展新功能,维护已有模块的设计,对接错误码等规范,修复多个缺陷
ChinaLym
released this
06 Dec 14:21
·
100 commits
to 05f5adb7c33499e467f9f89642697a1bdee09478
since this release
0.5(2020年12月6日)
拓展新功能,维护已有模块的设计,对接错误码等规范,修复多个缺陷。
亮点:
- 分布式id生成器性能提升(魔改雪花算法吊打各家实现)
- 基于SpringSecurity 安全的认证,该版本已经稳定,且实现了部分默认配置。目前支持 session / common token / jwt / jwk。
- 分布式锁(兼容jdk接口:可重入的redis实现,兼顾嵌套事务的数据库实现)
- 快速接入批量业务
- 操作日志框架支持嵌套调用(参考了 Spring 的事务传播)
大概改动
-
批量业务抽象支持
- csv / excel 解析
- 批量校验、查询进度、导入、查询进度、查询导入历史、导入详情
- 导出
-
全局id生成器
- 性能提升
- 增加透支消费上限配置、智能阻塞
- 超高压力下识别缓存buffer过度消费(只在单节点亿级/s以上的压测中才可能出现)
-
web
- 全局异常拦截:现在会对 JSR303 校验框架抛出的异常做详细日志记录以及返回值封装
- 日志记录:支持记录 MultiPartFile 类型参数信息
-
校验框架
-
日志框架
- 为 debug、info、warn 级别增加类似 errorWitErrorCode 的方法,支持更低级别打印错误码
- core 中提供 LogHelper 用于生成方法栈目标栈的跳转链接(从 http 的 HttpLogHelper 迁移)
-
优化基础包中的非必选强依赖
- 如 spring,降低最小使用依赖成本
-
默认使用Undertow
而非Tomcat
- 取消各个模块对
tomcat
的依赖 - 注意
undertow
不支持jsp - 废弃该需求,不实现:默认
tomcat
、若希望使用undertow
使用者自行排除即可
- 取消各个模块对
-
分布式锁
- 提供锁的概念、接口定义
- 默认实现
- JDK 适配(非分布式)
- 基于内存(伪分布式,默认)
- 基于数据库(依赖了数据库则默认使用该方式)
- 基于 Redis
-
加解密
- 修复本地存储加解密中-文件存储-未配置存储路径时未能正确新建
- 本地存储加解密中-文件存储-支持多个工程同时启动且共享一个文件
- 本地存储加解密中-文件存储-内容为空(如手动清空,但不删除该文件)导致的加载失败
- 修复密钥交换流程错误bug
- 密钥交换流程增加额外处理:服务器缓存意外失效后,客户端自动清理无效缓存并重新发起协商(如 redis 宕机重启,且恰好服务端密钥交换缓存丢失,而客户端密钥交换缓存还在)
- 删除加解密门面接口,因为可能未使用所有加密方式
- 默认项目启动后,异步初始化本地加解密,以提升第一次调用性能
-
安全与认证
- 提供 Token 认证方式默认实现和装配
- 完善 session 认证中条件装配
- 添加基于 Session 认证 Demo
- 添加基于 Token 认证 Demo
-
验证码框架
- 支持一个 url 需要校验多种验证码
-
操作日志框架
- 支持加了该注解的方法 A 中调用 加了该注解的方法 B 时
- 支持自定义业务传播行为(日志上下文创建策略),接口:OperationContextStrategy
- 调整日志上下文的包名、创建器类名
OperationLogBuilder
->OperationLogFactory