一、簡介:
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。