一、简介:
BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。
二、用法:
如果你有两个具有很多相同属性的JavaBean,一个很常见的情况就是PO对象(持久对象)和Dto对象(传输对象)。传统的方式是使用类似下面的语句对属性逐个赋值:
// 逐一赋值 userDto.setUsername(user.getUsername); userDto.setPassword(user.getPassword); userDto.setAge(user.getAge); ......... .........
而我们使用 BeanUtils.copyProperties() 方法以后,代码量大大的减少,而且整体程序看着也简洁明朗,代码如下:
BeanUtils.copyProperties(userDto, user); //第一个参数是转换后的类,第二个参数是待转换的类
如果User和UserDto间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要手动处理。例如:
User类里面有个createDate 创建时间字段,而UserDto里面是createTime字段。BeanUtils.copyProperties()不会对此字段做任何处理。必须要自己手动处理。
注意:spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。本例使用的是Apache下的包org.apache.commons.beanutils.BeanUtils。