基于Spring Boot的数据脱敏演示项目,,通过自定义注解和AOP切面实现数据脱敏功能
# SpringBoot-Data-Masking-Demo
## 项目简介
这是一个基于Spring Boot的数据脱敏演示项目,通过自定义注解和AOP切面实现数据脱敏功能。
## 技术栈
- Spring Boot 2.7.0
- Spring AOP
- Maven
## 功能特性
1. **多种脱敏类型**:支持中文姓名、身份证、手机号、邮箱、地址、银行卡等多种敏感信息脱敏
2. **自定义脱敏规则**:支持自定义前缀保留、后缀保留和替换字符
3. **注解驱动**:通过`@SensitiveData`注解标记需要脱敏的字段
4. **AOP自动处理**:无需修改业务代码,通过AOP自动处理返回数据
5. **嵌套对象支持**:支持对嵌套对象、集合、Map等复杂数据结构进行脱敏
## 使用方法
### 1. 添加脱敏注解
在实体类的敏感字段上添加`@SensitiveData`注解:
```java
public class UserInfo {
@SensitiveData(type = SensitiveTypeEnum.CHINESE_NAME)
private String name;
@SensitiveData(type = SensitiveTypeEnum.PHONE)
private String phone;
@SensitiveData(type = SensitiveTypeEnum.CUSTOM, prefixKeep = 2, suffixKeep = 1)
private String licensePlate;
}
2. 访问接口查看效果
启动项目后访问以下接口:
GET /api/user/info- 获取单个用户信息GET /api/user/list- 获取用户列表GET /api/user/map- 获取用户MapGET /api/user/detail- 获取用户详细信息
脱敏类型说明
CHINESE_NAME:中文姓名(保留姓氏,其余用*代替)ID_CARD:身份证号码(保留前3位和后3位)PHONE:手机号码(保留前3位和后4位)EMAIL:电子邮件(保留用户名首尾各1位)ADDRESS:地址(保留前6位字符)BANK_CARD:银行卡号(保留前6位和后4位)CUSTOM:自定义脱敏规则
核心实现
- SensitiveDataAspect:AOP切面,拦截控制器方法返回值
- SensitiveDataHandler:脱敏处理器,提供各种脱敏算法
- SensitiveData:脱敏注解,标记需要脱敏的字段
- SensitiveTypeEnum:脱敏类型枚举
项目结构
src/main/java/com/example/datamasking
├── annotation # 注解定义
│ └── SensitiveData.java
├── aspect # AOP切面
│ └── SensitiveDataAspect.java
├── util # 工具类
│ ├── SensitiveDataHandler.java
│ └── SensitiveTypeEnum.java
├── entity # 实体类
│ └── UserInfo.java
├── controller # 控制器
│ └── UserController.java
└── DataMaskingApplication.java # 启动类
源码下载:
标题:基于Spring Boot的数据脱敏演示项目,,通过自定义注解和AOP切面实现数据脱敏功能
作者:jiangyi
地址:http://jiangyi.space/articles/2026/01/06/1767668037216.html
0 评论