1. 程式人生 > >BeanUtils.copyProperties緩解代碼壓力,釋放雙手

BeanUtils.copyProperties緩解代碼壓力,釋放雙手

tar 對象 傳遞 復制 完整 color info 圖片 反射

簡單描述:之前在寫代碼的時候,經常把表單提交到後臺的對象的參數,通過getter方法取出來,然後,再通過setter方法傳遞給需要的對象,代碼中寫了很多get set這種方法,後來聽同事說,spring有一個BeanUtils.copyProperties()方法,可以代替我們手動來完成取值賦值的操作。我就試了試,發現果然可以。

BeanUtils.copyProperties(courseObj, courseVo);//把courseObj裏的屬性通過反射賦值給courseVo裏相同的屬性,不同的不賦值   前賦後

下邊是spring 的BeanUtils中copyProperties方法的源碼:

技術分享圖片

上邊註釋的意思就是:復制源bean的參數值給目標bean 源Class和目標Class不必相互匹配甚至相互派生彼此(我的理解是不需要有父子繼承關系),只要參數匹配就行。任何源bean暴露(擁有)的參數,而目標bean沒有的參數都會被忽略。意思就是指復制那些兩者都有的參數值給目標對象。這是一個很方便的方法,對於更復雜的轉換需求,考慮使用一個完整的BeanWrapper。 嗯嗯,就這樣啦。

真的是省了很多的這種代碼 courseVo.setName(courseObj.getName());

另外 apache也提供有copyProperties()方法,apache的org.apache.commons.beanutils就提供了兩種,一個是子包org.apache.commons.beanutils.BeanUtils---->copyProperties() 另一個是子包org.apache.commons.beanutils.PropertyUtils--->copyProperties(),不過需要註意的是這兩個方法的參數和spring的參數位置是相反的 copyProperties(target, source)

BeanUtils.copyProperties緩解代碼壓力,釋放雙手