關於org.apache.commons.beanutils.BeanUtils類與org.springframework.beans.BeanUtil類的區別


在一次項目中,由於沒有留意到這兩個包的不同,導致使用類的copyProperties()方法時,出現了Null key for a Map not allowed in JSON的錯誤,查看源碼發現這兩個方法的參數是對換過來了。

1:springframework.beans中的copyProperties的參數是(源頭,目標)

 

2:commons.beanutils中的copyProperties的參數是(目標,源頭),注意用這個方法時會有兩個Exceptions:IllegalAccessException, InvocationTargetException,用這個方法時需要處理這兩個異常。

查了下有篇博文是將這兩者區別的,下面是鏈接地址:

https://www.cnblogs.com/dongfangshenhua/p/7099970.html

引用如下:

1)兩者的copyProperties方法參數位置不同

  org.springframework.beans.BeanUtils:  copyProperties(sourceDemo, targetDemo)

  org.apache.commons.beanutils.BeanUtils:  copyProperties(targetDemo, sourceDemo)

2)要求兩個Bean的屬性名相同,且有對應的setXxx方法和getXxx方法。其實底層原理是使用sourceDemo的getXxx方法和targetDemo的setXxx方法

3)sourceDemo有的屬性而targetDemo沒有的屬性,不會封裝到targetDemo對象中;

   targetDemo有的屬性而sourceDemo沒有的屬性,會封裝到targetDemo中,數據為默認值(注意基本類型默認值與引用類型默認值不同)

4)類型轉換問題

  a)基本類型與其對應的封裝類型可以相互轉換

  b)org.springframework.beans.BeanUtils與org.apache.commons.beanutils.BeanUtils對於String和Date類型轉換的情況是不同的,具體看以下案例

 


免責聲明!

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



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