Java 不同包下的BeanUtils.copyProperties() 用法及区别

  • Post author:
  • Post category:java


☆☆☆引用包出处不一样,意思就不一样,使用的时候一定要看清楚是哪个包下面的,不同的包下面,而这两个类的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);

  1. B中的存在的属性,A中一定要有,但是A中可以有多余的属性;
  2. A中与B中相同的属性都会被替换,不管是否有值;
  3. A、B中的属性要名字相同,才能被赋值,不然的话需要手动赋值;
  4. Spring的BeanUtils的CopyProperties方法需要对应的属性有getter和setter方法;
  5. 如果存在属性完全相同的内部类,但是不是同一个内部类,即分别属于各自的内部类,则spring会认为属性不同,不会copy;
  6. spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。



版权声明:本文为qq_42813011原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。