BeanUtils.copyProperties復(fù)制對(duì)象結(jié)果為空的原因分析
BeanUtils.copyProperties復(fù)制對(duì)象結(jié)果為空原因
細(xì)心比對(duì),發(fā)現(xiàn)原來是導(dǎo)錯(cuò)了包導(dǎo)致的
正確的包
import org.springframework.beans.BeanUtils;
錯(cuò)誤的包
import org.apache.commons.beanutils.BeanUtils;
兩個(gè)類的區(qū)別
- 兩者的copyProperties方法參數(shù)位置不同org.springframework.beans.BeanUtils: copyProperties(sourceDemo, targetDemo)
- org.apache.commons.beanutils.BeanUtils: copyProperties(targetDemo, sourceDemo)
- 要求兩個(gè)Bean的屬性名相同,且有對(duì)應(yīng)的setXxx方法和getXxx方法。其實(shí)底層原理是使用sourceDemo的getXxx方法和targetDemo的setXxx方法
- sourceDemo有的屬性而targetDemo沒有的屬性,不會(huì)封裝到targetDemo對(duì)象中;targetDemo有的屬性而sourceDemo沒有的屬性,會(huì)封裝到targetDemo中,數(shù)據(jù)為默認(rèn)值(注意基本類型默認(rèn)值與引用類型默認(rèn)值不同)
- 類型轉(zhuǎn)換問題:基本類型與其對(duì)應(yīng)的封裝類型可以相互轉(zhuǎn)換。org.springframework.beans.BeanUtils與org.apache.commons.beanutils.BeanUtils對(duì)于String和Date類型轉(zhuǎn)換的情況是不同的
總結(jié):發(fā)現(xiàn)其實(shí)只需要將兩個(gè)對(duì)象換個(gè)位置就好了。。。
BeanUtils.copyProperties拷貝沒成功的坑,記錄解決原因
在使用BeanUtils時(shí),會(huì)先引用對(duì)應(yīng)的包,但是如果包引用不對(duì)的話,那么使用BeanUtils.copyProperties(Object value1, Object value2)進(jìn)行數(shù)據(jù)拷貝,可能是value1拷貝到value2上;也有可能是value2拷貝到value1上。
具體如下
包org.apache.commons.beanutils.BeanUtils, 則結(jié)果是:
- value2拷貝到value1上,即value2的值會(huì)覆蓋到value1上;
包org.springframework.beans.BeanUtils, 則結(jié)果是:
- value1拷貝到value2上,即value1的值會(huì)覆蓋到value2上。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java編程數(shù)組中最大子矩陣簡便解法實(shí)現(xiàn)代碼
這篇文章主要介紹了Java編程數(shù)組中最大子矩陣簡便解法實(shí)現(xiàn)代碼,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Java使用WeakHashMap實(shí)現(xiàn)緩存自動(dòng)清理
在 Java 中,內(nèi)存管理是一個(gè)重要的話題,尤其是在涉及到緩存的實(shí)現(xiàn)時(shí),如果緩存項(xiàng)不再被使用,我們希望它們能被自動(dòng)清理,而不必手動(dòng)刪除,WeakHashMap 就是 Java 提供的一種用于緩存和內(nèi)存管理的工具,本文將深入探討如何利用 WeakHashMap 來實(shí)現(xiàn)緩存自動(dòng)清理2025-01-01
SpringBoot整合Mail輕松實(shí)現(xiàn)郵件自動(dòng)推送功能
在項(xiàng)目中經(jīng)常會(huì)遇到SpringBoot推送消息的業(yè)務(wù),除了站內(nèi)推送通知,郵件推送也是一種常見的方式,本文小編就給大家介紹了SpringBoot整合Mail輕松實(shí)現(xiàn)郵件自動(dòng)推送功能,需要的朋友可以參考下2024-12-12
MyBatis動(dòng)態(tài)SQL實(shí)現(xiàn)配置過程解析
這篇文章主要介紹了MyBatis動(dòng)態(tài)SQL實(shí)現(xiàn)配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Java?SM2加密相關(guān)實(shí)現(xiàn)與簡單原理詳解
SM2算法可以用較少的計(jì)算能力提供比RSA算法更高的安全強(qiáng)度,而所需的密鑰長度卻遠(yuǎn)比RSA算法低,這篇文章主要給大家介紹了關(guān)于Java?SM2加密相關(guān)實(shí)現(xiàn)與簡單原理的相關(guān)資料,需要的朋友可以參考下2024-01-01

