java - 如何在使用 @ToString 注释或通过创建新注释记录时屏蔽值

标签 java spring annotations

我想创建自己的自定义注释,我使用的是 Spring 框架。

当有人注释他的 POJO 类时,后面的代码将触发方法。

例如@Sensetive(values = "accountNumber")
当在下面的类上注释时

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

将调用一个方法,当记录值时,它们将显示为屏蔽(例如 accountNumber = "12345"-> masked accountNumber = XXXX5)。

我知道 @ToString 注释可以在调用 toString 方法时完全排除该值,但是否有可能屏蔽它?

最佳答案

您可以覆盖 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的各个对象,因此覆盖此方法将有助于掩盖细节。

关于java - 如何在使用 @ToString 注释或通过创建新注释记录时屏蔽值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45139907/

相关文章:

java - Drools eval() 优化

java - 具有不同状态的值对象的验证 - 密码大小写

java - Neo4j DB - 客户端连接

java - 多个注解

java - 从 ArrayList 中删除多个元素

java - AspectJ - 尝试包装用一个注释而不是另一个注释注释的方法

java - 我如何在 Spring 中编写此 Mongo 聚合查询?

java - Spring @Required 注解已弃用?

google-app-engine - JDO 注释 : renaming columns across a hierarchy several levels deep

java - JAXB @XmlSchema 位置被忽略