yue-library是一个基于SpringBoot封装的增强库
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共享架构(阿里巴巴中台)
maven项目,在pom.xml文件中添加如下一段代码,并将${version}
替换为对应版本号:
<parent>
<groupId>ai.ylyuegroupId>
<artifactId>yue-library-dependenciesartifactId>
<version>${version}version>
parent>
随后引入所需要的模块,如WebMvc项目引入:yue-library-web
依赖说明:yue-library-base
为基础模块,一般情况下不需要单独引入,如:web、data-jdbc、data-redis等模块皆已默认依赖。
<dependencies>
<dependency>
<groupId>ai.ylyuegroupId>
<artifactId>yue-library-webartifactId>
dependency>
...
dependencies>
新建一个SpringBoot main
方法启动类:
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) throws Exception {
SpringApplication.run(TestApplication.class, args);
}
}
写一个测试接口:
@RestController
@RequestMapping("/quickstart")
public class QuickstartController {
@GetMapping("/get")
public Result<?> get(JSONObject paramJson) {
return ResultInfo.success(paramJson);
}
}
访问接口测试,如:http://localhost:8080/quickstart/get
{
"code": 200,
"msg": "成功",
"flag": true,
"count": null,
"data": {}
}
上述代码完全保持了SpringBoot的风格,但又使用到了yue-library的增强特性,如:
当然除了这些已使用到的特性之外,你还可以尝试如:响应时间类型时自动格式化、请求参数校验、API接口版本控制、反复读取Servlet输入流等。
并且在yue-library-samples
目录下,存放着不同架构类型的示例模板,你可以根据自身需求选择,从而快速上手。
数据脱敏作为安全层面的大范围话题,包含:数据存储加密、数据展示脱敏等多方面,这里主要实现的是数据存储加密的优雅解决方案。
数据存储加密解决方案实现,一般分为直接开干方式与优雅实现两种:
数据存储加解密的实现一般又分为两种,不可逆与对称加密。
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()
方法测试条件自动加密匹配查,存储数据自动解密查询自动解密,只支持DO实体类映射方式,并且类上面需要使用org.springframework.data.relational.core.mapping.@Table
注解声明解密表名,如下:
@Table("data_encrypt")
public class DataEncryptDO extends BaseCamelCaseDO {
}
当我们使用Json查询数据时,可以调用public void dataDecrypt(String tableName, JSONObject... resultJsons)
方法,将结果进行解密。
数据审计用于记录对数据执行增删改动作的操作人,结合数据版本控制可达到数据360安全审计效果,结合操作日志可对一起链路操作进行追踪溯源。
yue:
jdbc:
data-audit-table-name-match-enum: match # 数据审计表名匹配方式
data-audit-table-names: # 数据审计表名
- data_audit
- data_audit2
- data_audit3
AuditUserProvider
接口并配置为Bean@Bean
public AuditUserProvider auditUserProvider() {
return new AuditUserProvider() {
// 在你的应用程序中,如何获得当前用户信息,一般从Token中获取
@Override
public String getUser() {
return "ylyue";
}
@Override
public String getUserUuid() {
return "8fb1e1556cc84ba880d5a794e7b5f9e7";
}
};
}
db.insertXXX()
方法,测试数据创建人审计db.deleteLogicXXX()
方法,测试数据删除人审计db.updateXXX()
方法,测试数据更新人审计yue:
jdbc:
data-audit-properties:
field-name-create-user: create_user
field_name_create_user_uuid: create_user_uuid
field_name_create_time: create_time
field_name_update_user: update_user
field_name_update_user_uuid: update_user_uuid
field_name_update_time: update_time
field_name_delete_user: delete_user
field_name_delete_user_uuid: delete_user_uuid
field_name_delete_time: delete_time
数据填充、逻辑删除等新特性见官方文档
yue-library正在计划提供属于自身的脚手架项目,但相比于单纯的脚手架项目,他更具有以下几点优势:
收藏一波以表支持吧(≧▽≦)/!