yue-library简介
yue-library是一个基于SpringBoot封装的增强库
丰富的Java工具类库
优越的ORM框架
优雅的业务封装
优化的Spring环境配置
完善的规约限制
配套的代码生成平台
安稳贴切的开源架构方案
版本更新日志
主要变更:升级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关键依赖库
Maven详细依赖定义见pom.xml文件
依赖库 | 依赖版本 |
---|---|
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 |
工程结构
. yue-library
├── yue-library
│ ├── yue-library-dependencies dependencies版本控制
│ ├── yue-library-base 基础核心模块,提供丰富的Java工具类库、接口参数校验、类型转换器等
│ ├── yue-library-base-crypto 加解密模块,提供对称、非对称和摘要算法、密钥交换加解密等
│ ├── yue-library-web WebMvc模块,servlet编程,提供请求与响应参数的包装与解析等
│ ├── yue-library-webflux WebFlux实现,响应式编程(如:SpringCloudGateway)
│ ├── yue-library-data-jdbc ORM框架,基于SpringJdbc,拥有着强大性能的同时又不失简单灵活等
│ ├── yue-library-data-redis Redis客户端,基于SpringRedis,更简单灵活,提供分布式锁等
│ ├── yue-library-auth-service OAuth2认证模块,基于SpringSecurity,更简单灵活,提供全局token与登录等
│ ├── yue-library-auth-client OAuth2客户端模块,提供获取当前登录用户状态信息等
│ └── yue-library-pay 支付模块,基于pay-java-parent,让你真正做到一行代码实现支付聚合
└── yue-library-samples
├── yue-library-test web测试项目,提供详细的特性使用示例、接口单元测试
├── yue-library-test-webflux webflux测试项目,提供详细的特性使用示例、接口单元测试
├── yue-library-template-boot SpringBoot项目模版,提供快速开发示例
└── yue-library-template-cloud SpringCloud项目模版,SOA共享架构(阿里巴巴中台)
数据脱敏
数据脱敏作为安全层面的大范围话题,包含:数据存储加密、数据展示脱敏等多方面,这里主要实现的是数据存储加密的优雅解决方案。
数据存储加密解决方案实现,一般分为直接开干方式与优雅实现两种:
直接开干方式,无非依托于程序员自身,对业务字段进行单独处理,大家实现方式不一,水平不一,实现容易维护苦难
优雅实现依托于技术框架底层实现,对需要的字段进行存储加密取出解密,可以定制不同字段不同加密方案,相对优雅简洁少操心
应用场景
数据存储加解密的实现一般又分为两种,不可逆与对称加密。
不可逆一般用于像用户密码这样的场景,只需匹配查询,无需解密查看。需求量较小,开发者一般自行处理
对称加密大量用于像手机号、身份证号、邮箱等数据,进行存储加密,业务字段多繁杂,不仅需要查询加密可逆,又需保障安全,不能只使用一种加密算法
yue-library解决的就是需要大量对称加解密处理的场景,不同的字段可才有不同的密钥与加密算法,存储自动加密,查询自动匹配与解密。
使用限制
jdbcQueryxxx
开头的查询方法暂时不支持查询参数自动加密匹配,因为SQL中使用?
作为占位符,无法解析具体第几个参数是需要加密的
queryForxxx
开头的查询方法暂时不支持查询参数自动加密匹配,因为这是基础查询方法,容易出现多重加密错误。 我们可以采用调用public void dataEncrypt(String tableName, JSONObject... paramJsons)
方法,将参数实现处理,然后传入到queryForxxx
方法中,解决此问题。
如何使用
配置脱敏字段与加密算法
yue:
jdbc:data-encrypt-algorithm: AES # 缺省数据加密算法(仅当在表级未配置单独的加密算法时,以缺省值的方式生效)data-encrypt-key: 1234567890123456 # 缺省数据加密密钥(仅当在表级未配置单独的加密密钥时,以缺省值的方式生效)data-encrypt-configs: # 数据加密配置(key:表名,value:数据加密规则) data_encrypt: # 数据库对应的表名data-encrypt-algorithm: AES # 当前表加密算法(未设置使用缺省值)data-encrypt-key: 1234567890123455 # 当前表加密密钥(未设置使用缺省值)fieldNames: # 加密字段 - cellphone - password data_encrypt_2: # 数据库对应的表名fieldNames: # 加密字段 - email - password
使用测试
使用db.insertXXX()
方法测试加密存储使用db.deleteXXX()
方法测试条件自动加密匹配使用db.updateXXX()
方法测试条件自动加密匹配与更新内容加密存储使用db.getXXX()
、db.listXXX()
、db.pageXXX()
方法测试条件自动加密匹配查,存储数据自动解密
查询自动解密
对比脚手架
yue-library正在计划提供属于自身的脚手架项目,但相比于单纯的脚手架项目,他更具有以下几点优势:
简单易学:优雅的实现各个功能特性,并配备了完善的说明文档
轻松引用:不同于脚手架,对于现有的SpringBoot项目也可以引入yue-library
更易升级:以spring-boot-starter的方式提供支持,可随时跟进最新稳定版本
无需维护:开发者只需专注自身业务逻辑实现,并熟练运用你所使用的特性
灵活选取:你可以随时弃用yue-library保留SpringBoot原生使用
收藏一波以表支持吧(≧▽≦)/!