• Spring Bean继承的简介说明


    转自:

    Spring Bean继承的简介说明

    Bean定义包含了很多信息
    如:配置信息、构造函数参数、属性值和容器的一些具体信息
    如初始化方法、销毁方法等

    1. 子Bean可继承父Bean中的配置数据,也可在需要时,重写值及添加其他值
    2. Spring Bean定义的继承同Java中的继承无任何关系 您只需将父Bean 的定义作为一个模板,其它子 Bean 从父 Bean 中继承所需的配置
    3. 配置文件中可使用parent 属性来设置继承的父Bean
      1. 例: 下文将通过示例的方式将Bean继承的操作方法,如下所示:
        1. 创建 SpringDemo 项目,并在 src 目录下创建 com.java265 包
        2. 添加相应的 jar 包,可以参考我的第一个Spring程序
        3. 在 com.java265 包下创建 HelloWorld、HelloChina 和 MainApp 类
        4. 在 src 目录下创建 Spring 配置文件 Beans.xml
        5. 运行 SpringDemo 项目
        HelloWorld 类代码
         
        package com.java265;
        public class HelloWorld {
            private String message1;
            private String message2;
            public void setMessage1(String message) {
                this.message1 = message;
            }
            public void setMessage2(String message) {
                this.message2 = message;
            }
            public void getMessage1() {
                System.out.println("World Message1 : " + message1);
            }
            public void getMessage2() {
                System.out.println("World Message2 : " + message2);
            }
        }
        
        HelloChina 类代码
         
        package com.java265;
        public class HelloChina {
            private String message1;
            private String message2;
            private String message3;
            public void setMessage1(String message) {
                this.message1 = message;
            }
            public void setMessage2(String message) {
                this.message2 = message;
            }
            public void setMessage3(String message) {
                this.message3 = message;
            }
            public void getMessage1() {
                System.out.println("China Message1 : " + message1);
            }
            public void getMessage2() {
                System.out.println("China Message2 : " + message2);
            }
            public void getMessage3() {
                System.out.println("China Message3 : " + message3);
            }
        }
         
        在配置文件中,分别为 HelloWorld 中的 message1 和 message2 赋值
        使用 parent 属性将 HelloChain 定义为 HelloWorld 的子类,
        并为 HelloChain 中的 message1 和 message3 赋值 Beans.xml 文件代码如下
         
        
        
            
                
                
            
           
            
                
                
            
        
        
         
        MainApp 类代码
         
        
        package com.java265;
        import org.springframework.context.ApplicationContext;
        import org.springframework.context.support.ClassPathXmlApplicationContext;
        public class MainApp {
            public static void main(String[] args) {
                ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
                HelloWorld objA = (HelloWorld) context.getBean("helloWorld");
                objA.getMessage1();
                objA.getMessage2();
                HelloChina objB = (HelloChina) context.getBean("helloChina");
                objB.getMessage1();
                objB.getMessage2();
                objB.getMessage3();
            }
        }
        
        运行结果-----
        World Message1 : Hello World!
        World Message2 : Hello World2!
        China Message1 : Hello China!
        China Message2 : Hello World2!
        China Message3 : Hello China3!
        从以上输出结果我们可以看出,创建 helloChina 时并未对message2赋值但是由于 Bean 的继承,将值传递给了 message2  Bean.xml 其它说明定义模板 我们可以使用 abstarct="true"将其定义为抽象Bean,只可被继承不能被实例化 
         
        
            
                
                
                
            
            
                
                
            
         
  • 相关阅读:
    沉睡者IT - 中视频破10万播放秘诀,只需一个无脑动作
    SM项目 - Online Music Player(在线音乐播放器)- 项目部署
    算法工程师 | 如何快速 了解,掌握一个算法!脚踏实地,迎着星辰,向前出发 ~
    Kubernetes原理剖析与实战应用手册,太全了
    kafka 开启认证授权
    【c++提高1】数据结构之哈希表
    机器学习基础知识
    vue基于web的化妆品美妆商城电子商务python flask django
    限流算法之----滑动窗口
    Linux压缩与解压缩
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127701325