在某些业务场景下,我们在打印日志的时候需要对某些敏感信息过滤打印,那么这种情况下我们就可以利用org.apache.commons.lang.builder.ReflectionToStringBuilder的工具类来实现。
1、首先创建一个OrderDTO实体
class OrderDTO{
private String id;// 订单ID
private String idCardNum;// 身份证号码,敏感信息,我们将对这个字段进行过滤
private BigDecimal amount;// 订单金额
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIdCardNum() {
return idCardNum;
}
public void setIdCardNum(String idCardNum) {
this.idCardNum = idCardNum;
}
public BigDecimal getAmount() {
return amount;
}
public void setAmount(BigDecimal amount) {
this.amount = amount;
}
}
2、编写测试类
@Test
public void toStringExcludeTest(){
OrderDTO orderDTO = new OrderDTO();
orderDTO.setId("1");
orderDTO.setAmount(BigDecimal.TEN);
orderDTO.setIdCardNum("123456789");
// string[]数组内可以对多个字段进行过滤,保证字段名和实体中的字段名称一致
String s = ReflectionToStringBuilder.toStringExclude(orderDTO, new String[]{"idCardNum"});
System.out.println("打印结果: " + s);
}
3、控制台打印结果:
打印结果: com.yns.test.DemoTest$OrderDTO@732c2a62[id=1,amount=10]
该篇博客介绍了如何在Java中使用org.apache.commons.lang.builder.ReflectionToStringBuilder工具类来过滤并打印日志时的敏感信息,以OrderDTO实体为例,展示了如何排除身份证号码字段(idCardNum)的打印,确保在日志中不泄露敏感数据。
3962

被折叠的 条评论
为什么被折叠?



