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();
如何建立這個註解,並檢查這些場景有什麼想法?