@autowired注解抽象类_通用脱敏注解+策略模式应用

更新时间:2023-06-15 21:09:02 阅读: 评论:0

@autowired注解抽象类_通⽤脱敏注解+策略模式应⽤策略模式+⾃定义脱敏注解轻松实现脱敏功能
附件英语
⼀、定义注解及其通⽤类型
1、定义脱敏注解 @SensitiveField
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@JsonSerialize(using = SensitiveInfoSerialize.class)
@JacksonAnnotationsInside
public @interface SensitiveField {
/**
* 脱敏类型
* @return
*/
SensitiveType type() default SensitiveType.NULL;
/**
* 前部显⽰字符个数
* @return
*/
int prefix() default 4;
/**
* 尾部显⽰字符个数
* @return
*/
int suffix() default 3;
/**
* 星号个数
* @return
*/
int split() default 3;
}
2、定义脱敏类型 SensitiveType.class
public enum SensitiveType {
/
**
* 中⽂名
*/
CHINESE_NAME,
/**
* ⾝份证号
*/
灵修培训
ID_CARD,
/**
* 座机号
*/
bbo
FIXED_PHONE,
/**
* ⼿机号
*/
MOBILE_PHONE,
/**
* 电⼦邮件
*/淡妆化妆步骤
EMAIL,
/**
* 银⾏卡
*/
BANK_CARD,
/**
* 公司开户银⾏联号
*/
CNAPS_CODE,
/**
* 不脱敏
*/
NULL;
}
⼆、定义配置⽂件及拦截器
1、配置⽂件类 SensitiveInfoProperties.class
import org.t.properties.ConfigurationProperties;
/**
* 默认为启⽤状态,若是配置⽂件中配置为禁⽤,则会触发拦截器
*/
@ConfigurationProperties(prefix = SensitiveInfoProperties.FIELD_SENSITIVE_PREFIX) public class SensitiveInfoProperties {
/**
* 默认的数据脱敏配置前缀
*/
public final static String FIELD_SENSITIVE_PREFIX = "tomcoder.nsitive";
/**
accra>什么是表语* 脱敏配置是否启⽤标识_value
*/
public final static String FIELD_SENSITIVE_DISABLE_VALUE = "true";
/**
* 脱敏配置是否启⽤标识_key
*/
public final static String FIELD_SENSITIVE_KEY = "disable";
/**
* 是否启⽤脱敏标识(value默认true启⽤)
*/
private String disable = FIELD_SENSITIVE_DISABLE_VALUE;
public String getDisable() {
return disable;
}
public void tDisable(String disable) {
this.disable = disable;
}
}
2、禁⽤拦截类 DisableSensitiveInfoIntrospector.class
import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; import java.lang.annotation.Annotation;
/**
* 拦截器⽣效时,注解为@SensitiveField 不⽣效(返回fal)
* JacksonAnnotationIntrospector 为序列化时的拦截器接⼝
*/
public class DisableSensitiveInfoIntrospector extends JacksonAnnotationIntrospector { private static final long rialVersionUID = 5915688650237481024L;
@Override
public boolean isAnnotationBundle(Annotation ann) {
if (ann.annotationType().equals(SensitiveField.class)) {
return fal;
} el {
return super.isAnnotationBundle(ann);
}
出国留学条件
}
}
3、处理配置并依赖注⼊拦截器类 SensitiveInfoConfiguration.class
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dition.ConditionalOnProperty;
import org.t.properties.EnableConfigurationProperties;
import t.annotation.Bean;
import t.annotation.Configuration;
/**
* 配置处理类
* 根据配置⽂件来处理是否注⼊注解拦截器
* @EnableConfigurationProperties 指定配置类
* @ConditionalOnProperty
*  prefix 配置⽂件前缀
*  name 配置⽂件值 (prefix + name 即为application.properties中的配置)
*  havingValue ⽐较值,配置⽂件中的配置值和havingValue⽐较,相同则返回true
*  matchIfMissing ⽆配置项是默认为fal(即默认不启⽤禁⽤拦截类)
*/
@Configuration
@EnableConfigurationProperties({SensitiveInfoProperties.class})
@ConditionalOnProperty(name = SensitiveInfoProperties.FIELD_SENSITIVE_KEY
,
havingValue = SensitiveInfoProperties.FIELD_SENSITIVE_DISABLE_VALUE
, matchIfMissing = fal
, prefix = SensitiveInfoProperties.FIELD_SENSITIVE_PREFIX)
public class SensitiveInfoConfiguration {
/**
* 对象Mapper
雪莉英文
*/
@Autowired
private ObjectMapper objectMapper;
@Bean
public DisableSensitiveInfoIntrospector disableSensitiveInfoIntrospector() {职责英文
DisableSensitiveInfoIntrospector intrspector = new DisableSensitiveInfoIntrospector();
//tAnnotationIntrospector()设置实现了 JacksonAnnotationIntrospector.isAnnotationBundle()⽅法  objectMapper.tAnnotationIntrospector(intrspector);
return intrspector;
}
}
三、抽象类及序列化实现
1、序列化接⼝类 SensitiveHandler.class
美森

本文发布于:2023-06-15 21:09:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/146290.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:配置   注解   拦截器   个数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图