在某些业务场景下,我们在打印日志的时候需要对某些敏感信息过滤打印,那么这种情况下我们就可以利用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]