Commit 32d7d6ab2975f11e8d31ad4f7407a3023c7061df

Authored by YunaiV
1 parent e5ab9b71

code review 脱敏组件的代码

yudao-framework/yudao-spring-boot-starter-biz-desensitize/pom.xml
... ... @@ -9,8 +9,11 @@
9 9 <version>${revision}</version>
10 10 </parent>
11 11  
  12 + <!-- TODO 城:yudao-spring-boot-starter-biz-desensitize =》yudao-spring-boot-starter-desensitize,不属于业务哈 -->
12 13 <artifactId>yudao-spring-boot-starter-biz-desensitize</artifactId>
  14 + <!-- TODO 城:这个组件的说明; -->
13 15  
  16 + <!-- TODO 城:这里去掉哈 -->
14 17 <properties>
15 18 <maven.compiler.source>11</maven.compiler.source>
16 19 <maven.compiler.target>11</maven.compiler.target>
... ... @@ -40,4 +43,4 @@
40 43 <scope>test</scope>
41 44 </dependency>
42 45 </dependencies>
43   -</project>
44 46 \ No newline at end of file
  47 +</project>
... ...
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/DesensitizationHandlerHolder.java
... ... @@ -8,14 +8,17 @@ import cn.iocoder.yudao.framework.desensitize.core.slider.handler.DefaultDesensi
8 8 import java.util.Map;
9 9 import java.util.concurrent.ConcurrentHashMap;
10 10  
  11 +// TODO @城:DesensitizationHandlerHolder =》 DesensitizationHandlerFactory? Holder 没有太多工厂的味道哈
11 12 /**
12 13 * 脱敏处理器 Holder
13 14 */
14 15 public class DesensitizationHandlerHolder {
  16 +
15 17 /**
16 18 * handler 缓存,默认初始化内置的处理器
17 19 */
18 20 private static final Map<Class<? extends DesensitizationHandler>, DesensitizationHandler> HANDLER_MAP = new ConcurrentHashMap<>() {{
  21 + // TODO @城:这 2 个,是不是不用呀?需要的时候初始化
19 22 put(DefaultRegexDesensitizationHandler.class, new DefaultRegexDesensitizationHandler());
20 23 put(DefaultDesensitizationHandler.class, new DefaultDesensitizationHandler());
21 24 }};
... ...
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/annotation/Desensitize.java
... ... @@ -11,19 +11,21 @@ import java.lang.annotation.Retention;
11 11 import java.lang.annotation.RetentionPolicy;
12 12 import java.lang.annotation.Target;
13 13  
14   -
  14 +// TODO @城:每个接口上,author 写下哈。
  15 +// TODO @城:Desensitize = 》DesensitizeBy
  16 +// TODO @城:Desensitize 类注释,方便读者阅读理解
15 17 /**
16 18 * Desensitize 顶级脱敏注解
17 19 */
18 20 @Documented
19   -@Target({ ElementType.ANNOTATION_TYPE})
  21 +@Target(ElementType.ANNOTATION_TYPE)
20 22 @Retention(RetentionPolicy.RUNTIME)
21   -@JacksonAnnotationsInside
22   -@JsonSerialize(using = StringDesensitizeSerializer.class)
  23 +@JacksonAnnotationsInside // TODO @城:这个的作用,也可以写下
  24 +@JsonSerialize(using = StringDesensitizeSerializer.class) // TODO @城:这个的作用,也可以写下
23 25 public @interface Desensitize {
24 26  
25 27 /**
26 28 * 脱敏处理器
27 29 */
28   - Class<? extends DesensitizationHandler> desensitizationBy();
  30 + Class<? extends DesensitizationHandler> desensitizationBy(); // TODO @城:desensitizationBy -> handler
29 31 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/base/handler/DesensitizationHandler.java
... ... @@ -11,7 +11,7 @@ public interface DesensitizationHandler&lt;T extends Annotation&gt; {
11 11 * 脱敏
12 12 *
13 13 * @param origin 原始字符串
14   - * @param anno 注解信息
  14 + * @param anno 注解信息 // TODO 不要这样的缩写哈,anno -> annotation
15 15 * @return 脱敏后的字符串
16 16 */
17 17 String desensitize(String origin, T anno);
... ...
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/regex/handler/AbstractRegexDesensitizationHandler.java
... ... @@ -15,6 +15,8 @@ public abstract class AbstractRegexDesensitizationHandler&lt;T extends Annotation&gt;
15 15 return origin.replaceAll(regex, replacer);
16 16 }
17 17  
  18 + // TODO @城:是不是抽象两个方法,一个拿 regex;一个拿 replacer
  19 +
18 20 /**
19 21 * 获取注解的参数
20 22 *
... ...
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/core/slider/handler/AbstractDesensitizationHandler.java
... ... @@ -12,25 +12,26 @@ public abstract class AbstractDesensitizationHandler&lt;T extends Annotation&gt; imple
12 12 int prefixKeep = (Integer) args[0];
13 13 int suffixKeep = (Integer) args[1];
14 14 String replacer = (String) args[2];
15   -
16 15 int length = origin.length();
17 16  
18   - // 原始字符串长度小于等于保留长度,则原始字符串全部替换
  17 + // 情况一:原始字符串长度小于等于保留长度,则原始字符串全部替换
19 18 if (prefixKeep >= length || suffixKeep >= length) {
20 19 return buildReplacerByLength(replacer, length);
21 20 }
22 21  
23   - // 如果原始字符串小于等于前后缀保留字符串长度,则原始字符串全部替换
  22 + // 情况二:如果原始字符串小于等于前后缀保留字符串长度,则原始字符串全部替换
24 23 if ((prefixKeep + suffixKeep) >= length) {
25 24 return buildReplacerByLength(replacer, length);
26 25 }
27 26  
  27 + // 情况三:TODO 城
28 28 int interval = length - prefixKeep - suffixKeep;
29 29 return origin.substring(0, prefixKeep) +
30 30 buildReplacerByLength(replacer, interval) +
31 31 origin.substring(prefixKeep + interval);
32 32 }
33 33  
  34 + // TODO @城:类似,子类直接获取到参数哈
34 35 /**
35 36 * 获取注解的参数
36 37 *
... ... @@ -49,4 +50,5 @@ public abstract class AbstractDesensitizationHandler&lt;T extends Annotation&gt; imple
49 50 private String buildReplacerByLength(String replacer, int length) {
50 51 return String.valueOf(replacer).repeat(Math.max(0, length));
51 52 }
  53 +
52 54 }
... ...
yudao-framework/yudao-spring-boot-starter-biz-desensitize/src/main/java/cn/iocoder/yudao/framework/desensitize/serializer/StringDesensitizeSerializer.java
... ... @@ -19,16 +19,19 @@ import java.io.IOException;
19 19 import java.lang.annotation.Annotation;
20 20 import java.lang.reflect.Field;
21 21  
  22 +// TODO @城:挪到 base/serializer 包下
22 23 /**
23 24 * 脱敏序列化器
24 25 */
25 26 public class StringDesensitizeSerializer extends StdSerializer<String> implements ContextualSerializer {
  27 +
26 28 private DesensitizationHandler desensitizationHandler;
27 29  
28 30 protected StringDesensitizeSerializer() {
29 31 super(String.class);
30 32 }
31 33  
  34 + // TODO @城:get 和 set 方法是必须的么?如果是的话,可以换成 lombok 注解哈,简洁一点~
32 35 public DesensitizationHandler getDesensitizationHandler() {
33 36 return desensitizationHandler;
34 37 }
... ... @@ -55,6 +58,7 @@ public class StringDesensitizeSerializer extends StdSerializer&lt;String&gt; implement
55 58 return;
56 59 }
57 60  
  61 + // TODO @城:抽个 private getField 方法。让这个方法的逻辑主干,更清晰
58 62 String currentName = gen.getOutputContext().getCurrentName();
59 63 Object currentValue = gen.getCurrentValue();
60 64 Class<?> currentValueClass = currentValue.getClass();
... ... @@ -66,16 +70,13 @@ public class StringDesensitizeSerializer extends StdSerializer&lt;String&gt; implement
66 70 gen.writeString(value);
67 71 return;
68 72 }
69   -
70 73 for (Annotation annotation : field.getAnnotations()) {
71   -
72 74 if (AnnotationUtil.hasAnnotation(annotation.annotationType(), Desensitize.class)) {
73 75 value = this.desensitizationHandler.desensitize(value, annotation);
74 76 gen.writeString(value);
75 77 return;
76 78 }
77 79 }
78   -
79 80 gen.writeString(value);
80 81 }
81 82  
... ...