在使用org.springframework.beans.BeanUtils.copyproperty()复制对象的属性值的时候,一个为null的值,复制后的新对象的属性有值了,查看变量值的时候,发现是把之前对象的值赋值给了新对象(相同的对象引用是误导定位问题的主要因素)。
源对象:

新对象:
注意此时的id为182,对应值的引用是@13502

新对象的属性值来源:
这个id是259,对应的值的引用也是@13502

为了找原因,打断点进BeanUtils.copyproperty()方法,在赋值的时候,发现属性值和get方法获取到的数据不一致

找到get方法

最后找到get方法,的确是被重写了。
原因:因为该项目的setter、getter方法都用lombok插件自动生成,所以没想到重写方法的情况。后来了解到,之所以重写get方法,是为了兼容旧数据。对于这种情况,我一般的做法是:如果这个实体类的用途,还有除了展示数据外的用途,最好还是把兼容旧数据的逻辑写在业务代码里。
BeanUtils.copyProperty()陷阱
934

被折叠的 条评论
为什么被折叠?



