2017-07-17 93 views
2

我想創建自己的自定義註釋,我使用的是Spring框架。如何通過使用@ToString註釋或創建新註釋來屏蔽值時

當某人註釋他的POJO類時,後面的代碼會觸發方法。

例如@Sensetive(值=「使用accountNumber」) 當下面

public class User { 
    protected String user = ""; 
    protected String code = ""; 
    protected String accountNumber = ""; 
} 

上註釋將調用一個方法,該方法記錄它們將出現掩蔽的值時(例如使用accountNumber =「12345」 - >被屏蔽的accountNumber = XXXX5)。

我知道@ToString註釋可以在調用toString方法時完全排除該值,但有沒有可能將其屏蔽?

+0

通常我會設置全局佈局配置來屏蔽敏感信息。你沒有提到你使用的日誌提供者。以鏈接爲例,用於logback https://stackoverflow.com/questions/25277930/mask-sensitive-data-in-logs-with-logback –

+0

謝謝!這是我的問題的解決方案。 –

回答

-1

你可以只覆蓋toString方法和掩蓋它的帳號,例如:

@Override 
public String toString(){ 
    String maskedAccountNumber = accountNumber.replaceAll("[0-9]+", "*"); //This is just an example, actual implementation might differ 
    return "user : " + user + 
     " code : " + code + 
     " account number : " + maskedAccountNumber; 
} 

所有的日誌/印刷方法(如System.out.println)將調用所以有重寫了這個方法將幫助各個對象的toString掩蓋細節。

+0

感謝您的回覆,但我一直在尋找更通用的解決方案,適用於所有課程,而不僅僅針對特定的課程。 –

+0

@SamP。好吧,所有的班級都會有不同的成員和不同的掩護規則。所以通用解決方案可能並不理想。 –