天天看点

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只是实现了浅复制,这样存在一个风险就是通过该方法复制的两个对象中的属性会引用相同的地址,一个对象对属性进行更改,另一个对象的属性也同时会被更改,这是我们在使用中需要注意的地方。