Releases: yl-yue/yue-library
j11.2.6.2
- 移除yue-library-pay模块,放至里程碑实现
- 移除yue-library-data-jdbc模块,放至里程碑实现
- 移除yue-library-web-grpc模块,放至里程碑实现
- 新增yue-library-data-mybatis模版
- 底层jdbc模块更换为mybatis-plus,实现数据审计、数据填充、优雅分页、RESTful CRUD
实现多租户与i18n、mybatis-plus默认规范(技术与业务分离)等重量级特性。
新特性
- 【base】新增多租户与i18n实现,并提供规范文档
- 【base】
RESTful
、validation
、exception
全面支持i18n国际化 - 【base】优化默认国际化查找优先级,解决
Result toJsonString()
国际化 - 【base】validation新增相互关系校验
@Mutual
,互斥关系校验Exclusion
- 【base】新增相互关系与互斥关系校验器
- 【base】新增
Convert.toJSONString()
方法 - 【base】
RESTful
响应自动添加链路id - 【mybatis】底层jdbc模块更换为mybatis-plus,实现数据审计、数据填充、优雅分页、RESTful CRUD
- 【mybatis】mybatis新增BaseService,继承后即可获得符合RESTful风格的内置CRUD实现
- 【mybatis】增强mybatis-plus,实现全局的逻辑删除,不区分xml sql还是内置方法实现
- 【mybatis】完善相关Mybatis示例、分页示例等
- 【redis】分布式锁规范与精简
- 【规约】完善与优化POJO、层级、包名等规约
- 【规约】阿里云中央仓库启用优化
- 【template-boot】适配最新版本模版项目
Bug修复
- 【base】优化SpringUtils工具类,解决由于ApplicationContext还未加载,可能导致的空指针
Maven关键依赖库
依赖库 | 依赖版本 |
---|---|
spring-boot | 2.6.11 |
spring-cloud | 2021.0.4 |
spring-cloud-alibaba | 2021.0.4.0 |
hutool | 5.8.11 |
fastjson | 1.2.83 |
j11.2.6.1
这是一个分水岭版本,从下本版本开始,yue-library将不再注重大而全,而是精简与引领技术栈,会封装常用特性,但不会引入偏门的技术栈,如:grpc。
此类特性会作为脚手架demo提供。
- 新增grpc模块,但下个版本会移除,变为脚手架demo方式
- 完善了jdbc框架,提供了优雅SQL编写等诸多能力,但很遗憾下个版本此模块将被移除,以后会改为支持mybatis-plus
- 删除yue-library-dependencies模块(长期无多大价值),改直接依赖父级yue-library模块
新特性
- 【base】优化Result类为技术架构请求响应最外层对象,只包含技术架构约定数据,不再包含业务数据
- 【base】新增异常断言工具类
Assert
- 【jdbc】BaseDAO新增insertAndReturnUuid()方法
- 【jdbc】修复物理删除时,生成的SQL语句没有WHERE关键字
- 【jdbc】实现批量新增获取UUID
- 【jdbc】修复PostgreSQL方言关键字包装
""
,在参数中滥用导致的兼容bug - 【jdbc】新增Sql拼接工具类
Sql
- 【jdbc】规范jdbc注释,更加规范直观,补充完善jdbc文档,更加规范完善,添加示例与规范
- 【grpc】新增grpc restful全局异常处理
- 【grpc】新增proto与json互转工具类ProtoUtils
Bug修复
- 【jdbc】db修复deleteLogic()逻辑删除,缺失delete_time添加追加的bug
- 【jdbc】修复数据审计表名未进行判空处理,导致的空指针异常
Maven关键依赖库
依赖库 | 依赖版本 |
---|---|
spring-boot | 2.6.8 |
spring-cloud | 2021.0.3 |
spring-cloud-alibaba | 2021.0.1.0 |
hutool | 5.7.22 |
fastjson | 1.2.83 |
j11.2.6.0
j11.2.6.0【2022-05-09】
- 主要变更:升级SpringBoot到2.6.x,实现依赖优化与版本控制,加入grpc与plumelog,优化逻辑删除与物理删除分离
- 主要新特性:数据脱敏、数据审计、数据填充
新特性
- 【base】移除过期的UUIDUtils,用IdUtils代替
- 【jdbc】新增数据脱敏特性,请求加密,响应解密
- 【jdbc】数据脱敏:支持全局密钥配置于表级密钥配置,支持对表中某个字段配置
- 【jdbc】数据脱敏:支持AES、SM4(国密)、自定义加密机等用于脱敏处理
- 【jdbc】新增数据审计特性,增删改操作自动记录操作人
- 【jdbc】数据审计:支持使用配置一键开关需要进行审计的表、支持反向配置不审计的表
- 【jdbc】数据审计:支持自定义审计字段、审计用户
- 【jdbc】数据审计:规范数据审计字段命名并增加创建人、更新人、删除人为默认审计字段
- 【jdbc】新增数据填充特性,用于UUID,租户ID自动填充
- 【jdbc】数据填充:支持使用配置一键开关需要进行填充的表、支持反向配置不填充的表
- 【jdbc】数据填充:支持数据新增时填充,数据更新时填充
- 【jdbc】逻辑删除:完善逻辑删除与物理删除彻底分离,规范逻辑删除方法
- 【jdbc】新增insertAndReturnUuid()方法:插入时返回uuid
- 【jdbc】新增insertAndReturnFields()方法:插入时自定义返回需要的字段
- 【docs】完善jdbc文档,新增配置示例文档、db boolen示例、打印可执行SQL示例、基础的DDL表结构示例、添加Spring JDBC教程
- 【docs】完善数据库设计与交付规约:数据库枚举规约、多租户介绍
- 【docs】完善服务端规约:提供IDE配置模板
- 【docs】完善grpc规约:proto规约、工程结构规范、工程依赖规约、rpc接口版本控制规约
- 【docs】完善服务端工程结构规约:包名规约、Service/DAO层方法命名规约、POJO领域模型命名规约
- 【template-boot】优化并完善示例项目,上手更简单直观
Bug修复
- 【template-boot】修正因SpringBoot2.4版本新的配置文件机制,导致的启动失败 #I40ONA
Maven关键依赖库
依赖库 | 依赖版本 |
---|---|
spring-boot | 2.6.3 |
spring-cloud | 2021.0.1 |
spring-cloud-alibaba | 2021.0.1.0 |
hutool | 5.7.22 |
fastjson | 1.2.79 |
2.4.0
- 主要变更:使用SpringBoot2.4新的配置文件机制,提供默认的优化配置实现。
- 主要新特性:使用注解
@ApiIdempotent
可优雅的实现接口幂等性
新特性
- 【base】新增
@CarDrivingLicence
、@CarVin
、@CreditCode
、@ZipCode
四个校验注解 - 【base】迁移actuator配置至auth模块,添加actuator配置安全
- 【base】actuator端点默认使用32222端口进行访问,与API服务端口进行区分,保持良好的安全忧患意识
- 【base】网络代理,额外不代理地址默认添加所有内网网段
- 【jdbc】完善逻辑删除,delete_time条件追加时判断sql中是否存在delete_time否则不再追加
- 【redis】新增API接口幂等性优雅实现,使用
@ApiIdempotent
注解标注接口需要进行幂等性校验 - 【test】新增模块分离测试
- 【docs】新增安全规约
- 【docs】优化异步线程池示例与完善文档
- 【docs】完善逻辑删除文档
- 【docs】添加分布式缓存示例与文档
- 【docs】完善分布式锁与接口幂等性文档
- 【docs】完善POJO与Lombok的使用说明
- 【docs】添加类型转换器Bean别名规范
- 【docs】完善JavaBean参数解析器文档,提示IPO中有无参构造时,解析List类型需传标准是数组字符串
- 【other】删除部分早已标记为失效的方法
Bug修复
Maven仓库实际发布版本号
j8.2.4.0
、j11.2.4.0
依赖 | 版本 |
---|---|
spring-boot | 2.4.3 |
spring-cloud | 2020.0.2 |
spring-cloud-alibaba | 2021.1 |
hutool | 5.6.3 |
fastjson | 1.2.76 |
2.3.3
2.3.3主要为bug修复与安全加固版本,并优化了大量文档细节
新特性
- 【base】校验框架提供静态方法
Validator.getValidatorAndSetParam(Object param)
获取参数校验器,无需bean注入 - 【base】校验框架实现分组校验与提供默认分组
ValidationGroups
- 【base】新增
@CarDrivingLicence
、@CarVin
、@CreditCode
、@ZipCode
四个校验注解 - 【web】迁移RequestParamUtils实现至ServletUtils,并优化参数获取方式
- 【web】优化ServletUtils内部实现,移除multipart相关类改用hutool提供
- 【jdbc】从2.3.3开始使用(强依赖)druid进行连接池管理与SQL解析
Bug修复
- 【base】移除actuator配置
- 【web】修复异步线程装饰器在开启ServletAsyncContext时,接口响应被无故追加404异常 #I3HTAW
Maven仓库实际发布版本号
j8.2.3.3
、j11.2.3.3
依赖 | 版本 |
---|---|
spring-boot | 2.3.10.RELEASE |
spring-cloud | Hoxton.SR11 |
spring-cloud-alibaba | 2.2.5.RELEASE |
hutool | 5.6.3 |
fastjson | 1.2.76 |
2.3.2
此版本重点实现:密钥交换加解密、增强Bean转换能力、JDBC新增Elasticsearch-SQL、达梦、PostgreSQL方言。
新特性
- 【base】ParamUtils提示优化,添加错误原因
- 【base】添加JSONListConverter类型转换器从而支持
List<JSONObject>
类型处理(JDBC实体数据库查询映射时JSONArray格式文本数据不支持映射成List<JSONObject>
) - 【base】优化fastjson bean转换的jsonstr识别方式
- 【base】增强DateUtils与规范UUID工具类为IdUtils并优化IdUtils实现
- 【base】增强fastjson JavaBean转换能力,支持Character类型
- 【base】MapUtils增强值提取,支持list根据key提取map提取值支持map、fastjson pulls !17
- 【crypto】新增重磅特性-密钥交换加密:支持
@RequestDecrypt
注解实现请求自动解密 - 【crypto】新增重磅特性-密钥交换加密:支持
@ResponseEncrypt
注解实现响应内容加密 - 【crypto】密钥交换加密:默认提供本地Map与Redis两种交换密钥存储方案
- 【crypto】密钥交换加密:
@RequestDecrypt
与@ResponseEncrypt
注解支持使用交换密钥加密或自定义密钥等特性 - 【web】修复ApiVersion注解minimumVersion值等于的情况下410
- 【web】优化响应结果处理器在标准HTTP状态码时的空值处理
- 【web】新增ServletUtils.getAuthToken()方法,获取请求中的OAuth2 Token
- 【webflux】修复ApiVersion注解minimumVersion值等于的情况下410
- 【jdbc】对jdbc方言实现进行完善与优化,新增Elasticsearch-SQL、达梦、PostgreSQL方言
- 【jdbc】db.queryForObject 自动识别Bean类型与简单类型
- 【jdbc】参数美化增强支持JSONArray数据类型与
List<JSONObject>
数据类型 - 【jdbc】优化多行查询结果转换为单行查询结果实现
- 【jdbc】所有mappedClass查询方法自动识别所需RowMapper类型,实现JavaBean、map、基本类型结果自动匹配
- 【jdbc】规范内部部分常量命名与移除分页中不优雅的泛型实例PageTVO
- 【jdbc】增强自动方言识别,根据驱动类自动识别所需方言类型
- 【jdbc】默认Db Bean实现根据不同驱动类型,使用对应方言配置
- 【jdbc】优化DAO实现,抽象基础DAO
- 【jdbc】优化所有jdbc方法注释,描述更简洁,表达更清晰,注释更规范
- 【jdbc】删除早期存在的部分过时方法
- 【es】支持配置ConnectTimeout与SocketTimeout,并调大各自默认值为25与15秒
Bug修复
- 【base】修复fastjson JavaBean转换BUG #3688
- 【jdbc】修复isDataSize()方法可能因为数据库存在多行数据,而返回false的隐患
- 【jdbc】修复因错误测试而删除的参数类型美化(现已支持:Character、JSONObject、LocalDateTime进行特殊转换处理与布尔值映射识别)
Maven仓库实际发布版本号
j8.2.3.2
、j11.2.3.2
依赖 | 版本 |
---|---|
spring-boot | 2.3.8.RELEASE |
spring-cloud | Hoxton.SR10 |
spring-cloud-alibaba | 2.2.5.RELEASE |
hutool | 5.6.3 |
fastjson | 1.2.76 |
2.3.1
新特性
-【all】规范Redis、异步线程池枚举命名
-【jdbc】DAO中新增基于业务键的删、改、查方法,并建议使用:可避免主键ID被遍历风险
-【jdbc】优化delete方法为行数确认安全删除机制
-【jdbc】对依赖于主键ID作为唯一键进行删、改、查的方法添加有序主键可遍历安全风险提示(可能存在数据越权行为),并推荐使用业务唯一键
-【jdbc】默认开启动态数据源的sql打印
-【jdbc】全面接入参数类型美化(现已支持:Character、JSONObject、LocalDateTime进行特殊转换处理)
-【jdbc】实现布尔类型识别与is命名规约识别
-【jdbc】新增支持识别单行数据进行简单数据类型映射(如:String)
-【web】新增支持使用FastJson做HTTP消息转换器时按照属性声明顺序进行序列化排序
-【web】更改HTTP消息转换器默认配置将 Null Boolean 输出为 false
Bug修复
-【web】解决@RequestMapping中指定produces为xml类型时,JavaBean转换会去解析xml内容BUG #I2ALJW
-【web】解决获取request、response空指针,改为返回null
-【jdbc】优化DbBase与Dialect相互依赖设计,实现Db.clone()深度克隆并解决DbBase与Dialect相互依赖造成的成员变量(JdbcProperties)初始化null异常
-【jdbc】解决spring-cloud-stream启动时循环调用DbBase的equals()方法错误
-【jdbc】修改jdbcQueryBoolean返回类型错误
-【jdbc】修复JdbcProperties默认未注入问题
Maven仓库实际发布版本号
j8.2.3.1
、j11.2.3.1
依赖 | 版本 |
---|---|
spring-boot | 2.3.5.RELEASE |
spring-cloud | Hoxton.SR9 |
spring-cloud-alibaba | 2.2.3.RELEASE |
hutool | 5.4.4 |
fastjson | 1.2.74 |
2.3.0
2.3.0【2021-01-10】
Maven仓库实际发布版本号
j8.2.3.0
、j11.2.3.0
解释:j8对应Java 8,详情查看版本区别说明
关键依赖版本定义:
依赖 | 版本 |
---|---|
spring-boot | 2.3.5.RELEASE |
spring-cloud | Hoxton.SR9 |
spring-cloud-alibaba | 2.2.3.RELEASE |
hutool | 5.4.4 |
fastjson | 1.2.74 |
新特性
data-jdbc进行了重大优化,如下:
- 替换Db JavaBean转换方案,性能提升约300%+
- 优化Convert JavaBean转换性能
- 优化Convert异常提示,划分日志等级
- 重载驼峰转换方法到Convert类
JDBC实体类映射方案已重构,废弃了Spring的转换器方案,这是一次底层改动。我已测试了如下场景成功支持:
- 驼峰转换(自动映射、自动识别boolean is命名)
- JSONObject、JSONArray解析支持
- 支持实体类多set方法存在
新增如下RowMapper:
- BeanPropertyRowMapper,JavaBean映射两倍有余Spring原生的性能,支持更多类型映射,支持 JSONField
注解 - ColumnMapRowMapper,转换 Map 为 fastjson 的 JSONObject
- 【base】优化异步线程池默认配置,完美解决异步上下文遇到的所有问题(包括并发模式与Servlet提前关闭导致的子线程获取不到参数异常)
- 【base】全局统一异常处理新增FeignException处理,提供异常消息格式化构造
- 【base】增强ExceptionUtils,提供多种堆栈打印方式与获取方式,并优化异常拦截返回错误内容
- 【base】Java全局网络代理配置,允许使用
,
分割(如:localhost|127.*
localhost,127.*
) - 【base】新增R.errorPromptFormat()方法
- 【base】提供最外层HTTP状态码503(停机维护)约定
- 【base】新增JsonList驼峰等属性命名策略多个重载工具方法
- 【base】增强validator校验框架,支持将
@Valid
注解添加到POJO类上 - 【jdbc】规范排序、比较、预期、枚举,创建比较code定义命名规范类
- 【jdbc】对BaseDO进行驼峰命名规范
- 【jdbc】增强Db WHERE SQL对数组类型的处理
Bug修复
2.2.0
2.2.0【2020-10-09】
Maven仓库实际发布版本号
j8.2.2.0
、j11.2.2.0
解释:j8对应Java 8,详情查看版本区别说明
新特性
此版本主要实现HttpServletRequest
输入流可反复读取,重点解决全局异常捕获(包括过滤器中的异常)问题,规范Restful处理让body中的code值与http状态码保持一致。此版本关键依赖定义如下:
依赖 | 版本 |
---|---|
spring-boot | 2.2.5.RELEASE |
spring-cloud | Hoxton.SR3 |
spring-cloud-alibaba | 2.2.1.RELEASE |
hutool | 5.3.10 |
fastjson | 1.2.73 |
- 【base】标准了
Result
构建与使用(废弃ResultInfo类,添加R类进行Result
构建),错误提示使用:R.errorPrompt("用户名或密码错误")
、R.errorPrompt("验证码错误")
等 - 【base】Java全局网络代理封装,简化配置与操作(开启全局代理、获取代理配置、临时设置全局代理、取消全局代理等)
- 【web】提供
RepeatedlyReadServletRequestWrapper
过滤器,传递输入流可反复读取的HttpServletRequest
- 【web】解决全局异常捕获与HTTP状态码同步,并捕获404、405等异常
- 【web】提供Array数据结构参数解析器
ArrayArgumentResolver
- 【webflux】解决全局异常捕获与HTTP状态码同步,并捕获404、405等异常
- 【jdbc】提供jdbc逻辑删除数据剔除查询
- 【jdbc】支持JavaBean中存在多个setMethod方法
- 【jdbc】在JavaBean中调用setMethod方法设置JSONObject类型value时进行额外解析处理
- 【jdbc】克隆Db支持
- 【jdbc】JdbcTemplate支持,提供
queryXX
单参数类型方法 - 【es】新增es模块,提供es rest便捷配置与es sql配置
Bug修复
- 【redis】hashMap 序列化采用Object
2.1.0
2.1.0
2.1.0【2020-08-08】
新特性
基于全新的spring-cloud-alibaba体系封装改造,拆分独立的OAuth认证体系,对webmvc、webflux分开支持。依赖定义如下:
依赖 | 版本 |
---|---|
spring-boot | 2.1.10.RELEASE |
spring-cloud-alibaba | 2.1.2.RELEASE |
spring-cloud | Greenwich.SR5 |
- 【base】提供
yml
默认配置支持,一键解决常规坑点困扰(如:时间格式化、可执行SQL打印、接口定义打印等),更适合国内标准 - 【base】
@ApiVersion
注解可优雅的实现接口版本控制,只为更好的Restful - 【web】实用的参数解析器(解决参数获取困扰,不再区分Query传参与Body传参,Request请求参数智能解析),并提供
RequestParamUtils
工具类适用于各种环境下获取请求参数 - 【web】HTTP消息转换器增强,fastjson与jackson一键切换
- 【redis】规范redis包名标准,分离OAuth认证体系
- 【redis】提供可配置的Redis存储对象序列/反序列化器
- 【jdbc】遵守Java开发手册命名规约,Service/DAO 层方法命名规约,优化如获取单个对象采用 get 做前缀
- 【jdbc】提供友好的方言支持,为适配国产化数据库打下基础
- 【jdbc】提供业务主键支持
- 【jdbc】提供字段命名策略支持
- 【jdbc】提供逻辑删除支持
- 【jdbc】提供获得表元数据支持
Bug修复
- 【jdbc】批量插入容易报错问题