2017-07-17 89 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。好吧,所有的班级都会有不同的成员和不同的掩护规则。所以通用解决方案可能并不理想。 –