背景:项目中遇到model的String类型的属性被赋予空字符串””,希望把它替换为null
法1:
直接使用反射将对象的空字符串属性替换
- 缺点:性能差
法2:
直接使用ByteBuddy动态生成子类
Model:
1 |
|
- @Data:为lombok注解
1、 创建一个拦截器:
1 | public class Intercept { |
- @This 调用对象
- @Argument 方法参数(只能选择一个)
- @Arguments 方法所有参数
- @Origin 调用方法
- @SuperCall 回调父类方法
2、 动态生成创建子类
1 | public class Test { |
ElementMatchers.isSetter().and(ElementMatchers.takesArguments(String.class))
是set方法并且参数是String类型的方法进行拦截