天天看點

BeanUtils.copyProperties使用時需要注意的地方

簡介:

Spring給開發者提供了一個對java對象進行屬性處理的工具類 BeanUtils,如果有兩個對象具有大量相同的屬性,并且想要把一個對象的屬性拷貝到另一個對象裡時,我們可以使用BeanUtils.copyProperties(source,target) 方法。

用法:

BeanUtils.copyProperties(Object source, Object target) 方法是通過反射擷取source的get方法和set方法,然後使用get方法擷取source中的屬性,使用set方法将擷取到的屬性指派給target中相同變量名的屬性,這樣就可以将source複制到target中。但是copyProperties不支援List、Map等複雜類型的複制,如果我們想要對這些複雜類型進行複制的話就需要進行周遊複制了。

注意點:

通過BeanUtils.copyProperties對兩個對象進行複制隻是将兩個對象的屬性引用進行了複制,也就是說BeanUtils.copyProperties隻是實作了淺複制,這樣存在一個風險就是通過該方法複制的兩個對象中的屬性會引用相同的位址,一個對象對屬性進行更改,另一個對象的屬性也同時會被更改,這是我們在使用中需要注意的地方。