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

本文解析了Lombok注解@Accessors(chain=true)的作用,即改变setter方法返回值,使其可用于链式调用。并探讨了此注解对Spring Bean拷贝工具的影响及解决方案。
摘要由CSDN通过智能技术生成

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.解决方法

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

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值