🎨 JsonSimpleDesensitize 直接使用class 指定使用的handler,更方便直观
This commit is contained in:
@@ -55,9 +55,9 @@ public class JsonDesensitizeSerializer extends JsonSerializer<String> implements
|
||||
if (jsonDesensitizeAnnotation instanceof JsonSimpleDesensitize) {
|
||||
// Simple 类型处理
|
||||
JsonSimpleDesensitize an = (JsonSimpleDesensitize) this.jsonDesensitizeAnnotation;
|
||||
String type = an.type();
|
||||
SimpleDesensitizationHandler desensitizationHandler = SimpleDesensitizationHandlerHolder.TYPE_MAPS
|
||||
.get(type);
|
||||
Class<? extends SimpleDesensitizationHandler> handlerClass = an.handler();
|
||||
SimpleDesensitizationHandler desensitizationHandler = SimpleDesensitizationHandlerHolder
|
||||
.getHandler(handlerClass);
|
||||
Assert.notNull(desensitizationHandler, "SimpleDesensitizationHandler can not be Null");
|
||||
str = desensitizationHandler.handle(value);
|
||||
}
|
||||
|
||||
@@ -14,15 +14,35 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
*/
|
||||
public class SimpleDesensitizationHandlerHolder {
|
||||
|
||||
public final static Map<String, SimpleDesensitizationHandler> TYPE_MAPS = new ConcurrentHashMap<>();
|
||||
private final static Map<Class<? extends SimpleDesensitizationHandler>, SimpleDesensitizationHandler> MAP = new ConcurrentHashMap<>();
|
||||
|
||||
static {
|
||||
// SPI 加载所有的脱敏类型处理
|
||||
ServiceLoader<SimpleDesensitizationHandler> loadedDrivers = ServiceLoader
|
||||
.load(SimpleDesensitizationHandler.class);
|
||||
for (SimpleDesensitizationHandler desensitizationHandler : loadedDrivers) {
|
||||
TYPE_MAPS.put(desensitizationHandler.getType(), desensitizationHandler);
|
||||
MAP.put(desensitizationHandler.getClass(), desensitizationHandler);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Handler
|
||||
* @param handlerClass SimpleDesensitizationHandler的实现类
|
||||
* @return 处理器实例
|
||||
*/
|
||||
public static SimpleDesensitizationHandler getHandler(Class<? extends SimpleDesensitizationHandler> handlerClass) {
|
||||
return MAP.get(handlerClass);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加Handler
|
||||
* @param handlerClass SimpleDesensitizationHandler的实现类
|
||||
* @param handler 处理器实例
|
||||
* @return handler 处理器实例
|
||||
*/
|
||||
public static SimpleDesensitizationHandler addHandler(Class<? extends SimpleDesensitizationHandler> handlerClass,
|
||||
SimpleDesensitizationHandler handler) {
|
||||
return MAP.put(handlerClass, handler);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,9 +22,8 @@ public @interface JsonSimpleDesensitize {
|
||||
|
||||
/**
|
||||
* 脱敏类型,用于指定脱敏处理器
|
||||
* @see SimpleDesensitizationHandler#getType()
|
||||
* @return type
|
||||
*/
|
||||
String type();
|
||||
Class<? extends SimpleDesensitizationHandler> handler();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package com.hccake.ballcat.common.core.desensite.handler;
|
||||
|
||||
import com.hccake.ballcat.common.core.desensite.handler.DesensitizationHandler;
|
||||
|
||||
/**
|
||||
* 简单的脱敏处理器,传入源数据直接返回脱敏后的数据
|
||||
*
|
||||
@@ -10,12 +8,6 @@ import com.hccake.ballcat.common.core.desensite.handler.DesensitizationHandler;
|
||||
*/
|
||||
public interface SimpleDesensitizationHandler extends DesensitizationHandler {
|
||||
|
||||
/**
|
||||
* 脱敏类型
|
||||
* @return 类型
|
||||
*/
|
||||
String getType();
|
||||
|
||||
/**
|
||||
* 脱敏处理
|
||||
* @param origin 原始字符串
|
||||
|
||||
@@ -8,21 +8,6 @@ package com.hccake.ballcat.common.core.desensite.handler;
|
||||
*/
|
||||
public class SixAsteriskDesensitizationHandler implements SimpleDesensitizationHandler {
|
||||
|
||||
/**
|
||||
* 定长脱敏,总是6个星号,不管原文是啥
|
||||
* @see SixAsteriskDesensitizationHandler
|
||||
*/
|
||||
public static final String TYPE = "SIX_ASTERISK";
|
||||
|
||||
/**
|
||||
* 脱敏类型
|
||||
* @return 类型
|
||||
*/
|
||||
@Override
|
||||
public String getType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
/**
|
||||
* 脱敏处理
|
||||
* @param origin 原始字符串
|
||||
|
||||
@@ -42,7 +42,7 @@ public class DesensitizationUser {
|
||||
/**
|
||||
* 测试自定义脱敏
|
||||
*/
|
||||
@JsonSimpleDesensitize(type = TestDesensitizationHandler.TYPE)
|
||||
@JsonSimpleDesensitize(handler = TestDesensitizationHandler.class)
|
||||
private String testField;
|
||||
|
||||
}
|
||||
|
||||
@@ -8,13 +8,6 @@ import com.hccake.ballcat.common.core.desensite.handler.SimpleDesensitizationHan
|
||||
*/
|
||||
public class TestDesensitizationHandler implements SimpleDesensitizationHandler {
|
||||
|
||||
public final static String TYPE = "TEST";
|
||||
|
||||
@Override
|
||||
public String getType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String handle(String s) {
|
||||
return "TEST-" + s;
|
||||
|
||||
Reference in New Issue
Block a user