0
我正在创建一个应用程序,我计划对用户的机密数据进行采样。但对于调试问题,我打算记录这些值,比如哪个用户名有问题。但不想记录他们的密码。机密数据的自定义注释
我有这样的示例代码:
StringBuffer errorBuilder = new StringBuffer();
violations.forEach(v -> errorBuilder.append("\r\n\"")
.append(v.getPropertyPath())
.append("\": ")
.append(v.getMessage())
.append(" -- ")
.append(v.getInvalidValue())); // Avoid print here
return errorBuilder.toString();
这是样本类
@Getter
@Setter
public class UserCredentials {
@NotNull
@Size(min=5, max=15)
private String username;
@NotNull
@Pattern(regex=Constants.Regex.PASSWORD)
private String password;
@NotNull
@Pattern(regex=Constants.Regex.DOB)
private String dob;
@NotNull
@Pattern(regex=Constants.Regex.EMAIL)
private String email;
}
有两种方式,我想: 要在列表中,并检查放置一个“密码”如果getPropertyPath包含列表中的值并避免打印invalidValue。
但是,有没有任何注释或可以有任何注释,如@Confidential
,我可以避免打印此值。
我不介意创建自定义注释。我认为这样更清洁,我不必每次都写我在列表中检查为机密的字段名称。
我觉得做这样的:
StringBuffer errorBuilder = new StringBuffer();
violations.forEach(v -> {
if (v.getPropertyPath() has annotation @Confidential) { // Looking for this.
errorBuilder.append("\r\n\"")
.append(v.getPropertyPath())
.append("\": ")
.append(v.getMessage())
} else {
errorBuilder.append("\r\n\"")
.append(v.getPropertyPath())
.append("\": ")
.append(v.getMessage())
.append(" -- ")
.append(v.getInvalidValue()));
}
});
return errorBuilder.toString();
如何建立这个注解,并检查这些场景有什么想法?