数据脱敏

属性拷贝过程中,可能会有数据脱敏或者格式化的需求。对此,@Mapping注解提供了mask属性,可以灵活配置字符的模板。

mask支持的字符如下:

  • ':额外字符标识(必须成对出现)

  • *:需要掩盖的字符

  • <:和任意字符结合使用,表示在此字符之前所有字符均要掩盖

  • A:任意字符

  • U:需要转大写的字符

  • L:需要转小写的字符

mask示例:

  • 掩盖手机号中间4位:AAA****

  • 掩盖邮箱从第3个字符到“@”的所有字符:AA<@

class Foo {
    String email = "test@taocares.com";
    String mobile = "13812345678";
}
class FooDto {
    @Mapping(mask="AAA<@")
    String email;
    @Mapping(field="mobile", mask="AAA****AAAA")
    String mobile1;
    @Mapping(field="mobile", mask="AAA' 'AAAA' 'AAAA")
    String mobile2;
}

FooDto fooDto = BeanUtils.copyProperties(foo, FooDto.class);

System.out.println(fooDto.getEmail()); // "tes*@taocares.com"
System.out.println(fooDto.getMobile1()); // "138****5678"
System.out.println(fooDto.getMobile2()); // "138 1234 5678"

Last updated