AI智能
改变未来

@Accessors(chain = true)导致bean拷贝工具空指针


1.@Accessors(chain = true)注解的含义

公司原来的实体类上有lombok的@Accessors(chain = true)注解

网上百度了一下这个注解,改注解会将我们的setter方法的返回值进行修改,我将这个编译后的class类反编译一下得到下面的代码

我们的setId方法就变成了当前类的返回值,不是void了

2.bean拷贝工具中的报错

我们了解了上面的注解的含义,看一下拷贝类中报的错误

我们的该方法为null,我们先看一下setter是怎么生成的,在该类的107行生成目标的setter,然后我们点进去

 

这里生成类的属性描述列表,也就是外面setters对应的类型,然后我们看他是如何处理的

在520行我们看到他会拿set开头的方法,看该方法的返回值是否是void,如果不是的话则不进行处理,所以我们的setter是null

3.解决方法

如果该注解没有对程序造成影响,我们则可以把它注释掉,如果会对程序造成影响,我们可以使用下面的工具

[code]org.springframework.beans.BeanUtils.copyProperties(source, target);

 

 

 

 

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » @Accessors(chain = true)导致bean拷贝工具空指针