• Spring的copy属性


    Spring 的 BeanUtils.copyProperties()实现的是浅拷贝

    ClassA

    public class ClassA {
        private Integer age;
        private String name;
        private ClassC c;
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public ClassC getC() {
            return c;
        }
    
        public void setC(ClassC c) {
            this.c = c;
        }
    
        @Override
        public String toString() {
            return "ClassA{" +
                    "age=" + age +
                    ", name='" + name + '\'' +
                    ", c=" + c +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    ClassB

    public class ClassB {
        private Integer age;
        private String name;
        private String other;
        private ClassC d;
        private ClassD c;
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getOther() {
            return other;
        }
    
        public void setOther(String other) {
            this.other = other;
        }
    
        public ClassD getC() {
            return c;
        }
    
        public void setC(ClassD c) {
            this.c = c;
        }
    
    
        public ClassC getD() {
            return d;
        }
    
        public void setD(ClassC d) {
            this.d = d;
        }
    
        @Override
        public String toString() {
            return "ClassB{" +
                    "age=" + age +
                    ", name='" + name + '\'' +
                    ", other='" + other + '\'' +
                    ", c=" + c +
                    ", d=" + d +
                    '}';
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60

    ClassC

    public class ClassC {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "ClassC{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    ClassD

    public class ClassD {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "ClassD{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    main

        public static void main(String[] args) {
            ClassA a=new ClassA();
            a.setAge(10);
            a.setName("A");
            ClassC c=new ClassC();
            c.setName("C");
            a.setC(c);
    
            ClassB b=new ClassB();
            b.setAge(111);
            b.setName("B");
            ClassC c1=new ClassC();
            c1.setName("C1");
            b.setD(c1);
            ClassD d=new ClassD();
            d.setName("D");
            b.setC(d);
            System.out.println("我是改变前的a"+a);
            System.out.println("我是改变前的b"+b);
            System.out.println("我是改变前的c"+c);
            BeanUtils.copyProperties(a,b);
            System.out.println("我是改变后的a"+a);
            System.out.println("我是改变后的b"+b);
            System.out.println("我是改变后的c"+c);
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    结果
    在这里插入图片描述
    b只复制和a属性类型相同的值

  • 相关阅读:
    常见的JVM 面试题
    Python 核心编程
    C调用Objective-C的类和方法
    智慧城市新篇章:数字孪生的力量与未来
    Redis 持久化 - RDB 与 AOF
    js Fetch返回数据res.json()报错问题
    Netron【.pt转.torchscript模型展示】
    云计算与云安全简介
    基于 SaaS 搭建的党建小程序源码系统 带完整的搭建教程
    深入理解C++11
  • 原文地址:https://blog.csdn.net/qq_38030465/article/details/136145971