最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Spring BeanUtils的copyProperties方法使用及注意事項

 更新時間:2021年06月16日 09:00:47   作者:小布1994  
這篇文章主要介紹了基于Spring BeanUtils的copyProperties方法使用及注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

如下所示:

package com.demo;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.util.Arrays;
import java.util.List;
/**
 * @author xiaobu
 * @version JDK1.8.0_171
 * @date on  2019/10/8 10:04
 * @description
 */
public class BeanUtilsTest {
    @Data
    private static class CopyTest1 {
        private String outerName;
        private CopyTest1.InnerClass innerClass;
        private List clazz;
        @Data
        private static class InnerClass {
            public String innerName;
        }
    }
    @Data
    private static class CopyTest2 {
        private String outerName;
        private CopyTest2.InnerClass innerClass;
        private List clazz;
        @Data
        static class InnerClass {
            private String innerName;
        }
    }
    public static void main(String[] args) {
        CopyTest1 copyTest1 = new CopyTest1();
        copyTest1.outerName = "outer xiaobu";
        CopyTest1.InnerClass innerClass = new CopyTest1.InnerClass();
        innerClass.innerName = "inner xiaobu";
        copyTest1.innerClass = innerClass;
        copyTest1.clazz = Arrays.asList(1, 2, 3);
        System.out.println("copyTest1 = " + copyTest1);
        CopyTest2 copyTest2 = new CopyTest2();
        //未copy內(nèi)部類的屬性
        BeanUtils.copyProperties(copyTest1, copyTest2);
        System.out.println("copy內(nèi)部類的屬性前copyTest2 = " + copyTest2);
        CopyTest2.InnerClass innerClass2 = new CopyTest2.InnerClass();
        copyTest2.innerClass = innerClass2;
        BeanUtils.copyProperties(innerClass, innerClass2);
        System.out.println("copy內(nèi)部類的屬性后copyTest2 = " + copyTest2);
    }
}

總結(jié)

1、Spring的BeanUtils的CopyProperties方法需要對應(yīng)的屬性有g(shù)etter和setter方法;

2、如果存在屬性完全相同的內(nèi)部類,但是不是同一個內(nèi)部類,即分別屬于各自的內(nèi)部類,則spring會認為屬性不同,不會copy;

3、泛型只在編譯期起作用,不能依靠泛型來做運行期的限制;

4、最后,spring和apache的copy屬性的方法源和目的參數(shù)的位置正好相反,所以導(dǎo)包和調(diào)用的時候都要注意一下。

泛型只在編譯期起作用,不能依靠泛型來做運行期的限制

package com.demo;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
/**
 * @author xiaobu
 * @version JDK1.8.0_171
 * @date on  2019/10/8 14:54
 * @description
 */
public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(111);
        list.add(222);
        list.add("xiaobu");  //編譯器報錯
        Class clazz3 = Class.forName("java.util.ArrayList");//獲取ArrayList的字節(jié)碼文件
        Method m = clazz3.getMethod("add", Object.class);//獲取add() 方法,Object.class 代表任意對象類型的數(shù)據(jù)
        m.invoke(list,"xiaobu");//通過反射添加字符串類型元素數(shù)據(jù)
        System.out.println(list);//運行結(jié)果:[111, 222, xiaobu]
    }
}

BeanUtils.copyProperties 出錯

注意:屬性復(fù)制,不同jar中的方法,用法不一樣!

Spring 包(org.springframework.beans)中

BeanUtils.copyProperties(A,B);

是A中的值賦值給B

Apache 包(org.apache.commons.beanutils)中(常用)

BeanUtils.copyProperties(A,B);

是B中的值賦值給A

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java基于二分搜索樹、鏈表的實現(xiàn)的集合Set復(fù)雜度分析實例詳解

    Java基于二分搜索樹、鏈表的實現(xiàn)的集合Set復(fù)雜度分析實例詳解

    這篇文章主要介紹了Java基于二分搜索樹、鏈表的實現(xiàn)的集合Set復(fù)雜度分析,結(jié)合實例形式詳細分析了Java基于二分搜索樹、鏈表的實現(xiàn)的集合Set復(fù)雜度分析相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-03-03
  • El表達式使用問題javax.el.ELException:Failed to parse the expression的解決方式

    El表達式使用問題javax.el.ELException:Failed to parse the expression

    今天小編就為大家分享一篇關(guān)于Jsp El表達式使用問題javax.el.ELException:Failed to parse the expression的解決方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • springboot+redis+阿里云短信實現(xiàn)手機號登錄功能

    springboot+redis+阿里云短信實現(xiàn)手機號登錄功能

    這篇文章主要介紹了springboot+redis+阿里云短信實現(xiàn)手機號登錄功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01
  • Java實現(xiàn)音頻添加自定義時長靜音的示例代碼

    Java實現(xiàn)音頻添加自定義時長靜音的示例代碼

    這篇文章主要介紹了一個Java工具類,可以實現(xiàn)給一個wav音頻添加自定義時長靜音。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-01-01
  • Java中數(shù)組的多種定義方式總結(jié)

    Java中數(shù)組的多種定義方式總結(jié)

    在?Java?編程語言中,數(shù)組是一種核心且基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),用于存儲具有相同類型的多個元素,本文將深入探討?Java?中數(shù)組定義的多種方式,希望對大家有所幫助
    2024-11-11
  • SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息

    SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息

    RocketMQ 是一款開源的分布式消息中間件,由阿里巴巴開源,它具有高可用性、高性能、低延遲等特點,廣泛應(yīng)用于阿里巴巴集團內(nèi)部以及眾多外部企業(yè)的業(yè)務(wù)系統(tǒng)中,本文給大家介紹了SpringBoot整合RocketMQ實現(xiàn)發(fā)送同步消息,需要的朋友可以參考下
    2024-04-04
  • idea中使用git插件回滾代碼的流程步驟

    idea中使用git插件回滾代碼的流程步驟

    使用idea開發(fā)java代碼時,如果想回滾git提交的代碼, 需要操作三步,本篇步驟操作前,前提是你的電腦已經(jīng)安裝了git插件,并且你的idea也集成了git插件,下面是詳細步驟,需要的朋友可以參考下
    2025-04-04
  • springboot整合@Retryable實現(xiàn)重試功能的示例代碼

    springboot整合@Retryable實現(xiàn)重試功能的示例代碼

    本文主要介紹了springboot整合@Retryable實現(xiàn)重試功能的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java的動態(tài)代理模式之Cglib代理詳解

    Java的動態(tài)代理模式之Cglib代理詳解

    這篇文章主要介紹了Java的動態(tài)代理模式之Cglib代理詳解,Cglib代理也叫作?子類代理,它是在內(nèi)存中構(gòu)建一個子類對象從而實現(xiàn)對目標對象功能擴展,?有些書也將Cglib代理歸屬到動態(tài)代理,需要的朋友可以參考下
    2023-11-11
  • servlet Cookie使用方法詳解(六)

    servlet Cookie使用方法詳解(六)

    這篇文章主要為大家詳細介紹了servlet Cookie的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論

清流县| 高淳县| 合阳县| 咸宁市| 天台县| 金乡县| 东宁县| 庆安县| 晋江市| 神农架林区| 徐汇区| 四平市| 北辰区| 吉木萨尔县| 收藏| 庆阳市| 响水县| 云霄县| 望奎县| 鲜城| 通江县| 浙江省| 乌鲁木齐市| 久治县| 定结县| 岳阳县| 隆尧县| 平舆县| 鄂温| 珠海市| 横峰县| 龙里县| 太原市| 巴中市| 临泽县| 凤凰县| 康乐县| 龙陵县| 特克斯县| 漾濞| 海丰县|