☆☆☆引用包出处不一样,意思就不一样,使用的时候一定要看清楚是哪个包下面的,不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的。
示例: A,B为对象 BeanUtils.copyProperties(A, B);
一、BeanUtils是org.springframework.beans.BeanUtils
☆☆ A拷贝到B
//source 源文件,target 目标文件
public static void copyProperties(Object source, Object target)
throws BeansException {
copyProperties(source, target, null, (String[]) null);
}
二、BeanUtils是org.apache.commons.beanutils.BeanUtils
☆☆ B拷贝到A
//dest目标文件,orig原始的、源文件
public static void copyProperties(Object dest, Object orig)
throws IllegalAccessException, InvocationTargetException {
BeanUtilsBean.getInstance().copyProperties(dest, orig);
}
三、注意
BeanUtils.copyProperties(A, B);
- B中的存在的属性,A中一定要有,但是A中可以有多余的属性;
- A中与B中相同的属性都会被替换,不管是否有值;
- A、B中的属性要名字相同,才能被赋值,不然的话需要手动赋值;
- Spring的BeanUtils的CopyProperties方法需要对应的属性有getter和setter方法;
- 如果存在属性完全相同的内部类,但是不是同一个内部类,即分别属于各自的内部类,则spring会认为属性不同,不会copy;
- spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。
版权声明:本文为qq_42813011原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。