一次踩坑记录

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

源对象:

新对象:

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

新对象的属性值来源:

这个id是259,对应的值的引用也是@13502

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

找到get方法

最后找到get方法,的确是被重写了。

 

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章