【項目小結】 -- BeanUtils.copyProperties(A,B)屬性復制


 BeanUtils提供對Java反省和自省API的包裝。主要目的是利用反射機制對JavaBean的屬性進行處理。由於一個JavaBean通常會包含較多屬性,很多情況下需要對JavaBean進行處理導致大量get/set代碼堆積,增加了代碼長度和閱讀代碼的難度。

    於是BeanUtils.copyProperties(A,B)提供了JavaBean之間的屬性復制。當然這個方法值對於相同屬性之間的復制,當兩個實體中存在不同屬性時,BeanUtils無法對其進行處理,需程序員使用的set()方法進行處理。目前有兩套BeanUtils的jar可以進行復制操作,但是用法不太一樣:

    ① package org.springframework.beans;

        BeanUtils.copyProperties(A,B) --> 是將A中的值賦值給B

    ② package org.apache.commons.beanutils;(常用)

        BeanUtils.copyProperties(A,B) -->  是將B中的值賦值給A

    BeanUtils.copyProperties(A,B)針對ArrayList的copy

List<Object> listOrigin (with data)
List<Object> listDestination= new ArrayList<Object>(); 

for (Object source: listOrigin ) {
Object target= new Object();
BeanUtils.copyProperties(source , target);
listDestination.add(target);
}

 


    補充:除BeanUtils外還有一個名為PropertyUtils的工具類,也提供copyProperties(A,B)方法,與BeanUtils的十分相似,但還是有區別的:BeanUtils提供類型轉換功能,即發現兩個JavaBean的同名屬性為不同類型時,在支持的數據類型范圍內進行轉換,而前者不支持這個功能,但是速度會更快一些。

    詳情參考:https://www.cnblogs.com/HassanBlog/articles/3200239.html

    注意:BeanUtils和PropertyUtils中復制屬性的使用效率都不高,執行時間會很慢。需要謹慎使用。附原理及重寫方案:重寫BeanUtils.copyProperties(復制對象屬性方法)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM