1.自定義註解
@Documented
@Inherited
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Desensitized {
String value() default "";
}
2.使用註解過濾的方法,對原對象不做修改
public Object getObj(Object object) throws IOException {
Class cls=object.getClass();
String value = objectMapper.writeValueAsString(object);
Object obj = objectMapper.readValue(value, cls);
if (obj != null) {
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
Desensitized annotation = field.getAnnotation(Desensitized.class);
if (annotation != null) {
try {
field.setAccessible(true);
field.set(obj, "");
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
return obj;
}
3.驗證
public class ClassDto extends PageDto{
@Desensitized
private String classNo;
private String className;
private String classPIc;
public String getClassNo() {
return classNo;
}
public void setClassNo(String classNo) {
this.classNo = classNo;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getClassPIc() {
return classPIc;
}
public void setClassPIc(String classPIc) {
this.classPIc = classPIc;
}
}
後臺打印: