BeanUtils提供了对java反射和自省API的包装,其主要目的是利用反射机制对JavaBean的属性进行处理。它里面还有很多工具类,这里我们介绍一下copyProperties。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。
如果有两个具有很多相同属性的JavaBean,传统的方式对属性逐个赋值:
user.setName(tempUser.getName());
user.setAge(tempUser.getAge());
如果按照上面那种赋值方式,是非常麻烦的,而且代码估计会很多
如果用copyProperties,直接一行代码,然后就搞定了。
BeanUtils.copyProperties("转换后的类", "待转换的类");
如:把userTemp赋值给user
BeanUtils.copyProperties(userTemp,user);;
有几点我们需要注意:
BeanUtils.copyProperties(a, b);
b中的存在的属性,a中一定要有,但是a中可以有多余的属性;
a、 b中的属性要名字相同,才能被赋值,不然的话需要手动赋值;
Spring的BeanUtils的CopyProperties方法需要对应的属性有getter和setter方法;
如果存在属性完全相同的内部类,但是不是同一个内部类