一次踩坑記錄

在使用org.springframework.beans.BeanUtils.copyproperty()複製對象的屬性值的時候,一個爲null的值,複製後的新對象的屬性有值了,查看變量值的時候,發現是把之前對象的值賦值給了新對象(相同的對象引用是誤導定位問題的主要因素)。

源對象:

新對象:

注意此時的id爲182,對應值的引用是@13502

新對象的屬性值來源:

這個id是259,對應的值的引用也是@13502

爲了找原因,打斷點進BeanUtils.copyproperty()方法,在賦值的時候,發現屬性值和get方法獲取到的數據不一致

找到get方法

最後找到get方法,的確是被重寫了。

 

原因:因爲該項目的setter、getter方法都用lombok插件自動生成,所以沒想到重寫方法的情況。後來瞭解到,之所以重寫get方法,是爲了兼容舊數據。對於這種情況,我一般的做法是:如果這個實體類的用途,還有除了展示數據外的用途,最好還是把兼容舊數據的邏輯寫在業務代碼裏。

 

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