• 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,只可被继承不能被实例化 
         
        
            
                
                
                
            
            
                
                
            
         
  • 相关阅读:
    Linux下的多线程教程
    JavaScript:获取实时年份、月份、日期
    江门車馬炮汽车金融中心 11月11日开张
    模型 金字塔原理
    【信息学CSP-J近16年历年真题64题】真题练习与解析 第7题之表达式
    全局变量报错:\Output\STM32.axf: Error: L6218E: Undefined symbol
    淘宝/天猫按关键字搜索淘宝商品 API 返回值说明
    乐观锁和悲观锁
    transformer中的ffn
    第十七章 源代码文件 REST API 教程(二)
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127701325