博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBean 定义继承
阅读量:5805 次
发布时间:2019-06-18

本文共 2843 字,大约阅读时间需要 9 分钟。

Bean定义继承

bean定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等。子bean的定义继承副定义的配置数据。子定义可以根据需要重写一些值,或者添加其他值。

Spring Bean定义的继承与Java类的继承无关,但是继承的概念是一样的。你可以定义一个父bean的定义作为模板和其他子bean就可以从父bean中继承所需的配置。

当你使用基于XML的配置元数据时,通过使用父属性,指定父bean作为该属性的值来表明自bean的定义。

Bean.xml:在该配置文件中我们定义有两个属性message1,message2的“helloworld“bean,然后,使用parent属性把”helloIndia“bean定义为”helloworld“的孩子。这个字bean继承message2的属性,重写message1的属性,并且引入一个属性message3.

HelloWorld.java的内容:

package com.tuorialsponit;public class HelloWorld {    private String message1;    private String message2;    public String getMessage1() {        return message1;    }    public void setMessage1(String message1) {        this.message1 = message1;    }    public String getMessage2() {        return message2;    }    public void setMessage2(String message2) {        this.message2 = message2;    }    }

 

HelloIndia.java:

package com.tuorialsponit;public class HelloIndia {    private String message1;    private String message2;    private String message3;    public String getMessage1() {        return message1;    }    public void setMessage1(String message1) {        this.message1 = message1;    }    public String getMessage2() {        return message2;    }    public void setMessage2(String message2) {        this.message2 = message2;    }    public String getMessage3() {        return message3;    }    public void setMessage3(String message3) {        this.message3 = message3;    }}

MainApp.java内容:

package com.tuorialsponit;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 obj1 = (HelloWorld) context.getBean("helloworld");        System.out.println(obj1.getMessage1());        System.out.println(obj1.getMessage2());                System.out.println("-----------------------");        HelloIndia obj2 = (HelloIndia) context.getBean("helloIndia");        System.out.println(obj2.getMessage1());        System.out.println(obj2.getMessage2());        System.out.println(obj2.getMessage3());//        String message = obj.getMessage();//        System.out.println(message);    }}

执行结果:

在这里你可以观察到,我们创建”helloIndia“bean的同时并没有传递message2,但是由于Bean定义的继承,所以它传递了message2.

Bean定义模板

父bean(abstract)自身不能被实例化,因为它是不完整的,而且它也被明确地标记为抽象的。当一个定义是抽象的,它仅仅作为一个纯粹的模板bean定义来使用,充当子定义的父定义使用。

转载于:https://www.cnblogs.com/fangpengchengbupter/p/7811896.html

你可能感兴趣的文章
开源 免费 java CMS - FreeCMS1.2-标签 infoSign
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成栏目列表数据
查看>>
git reset 三种用法总结
查看>>
hdfs笔记
查看>>
虚拟机新增加硬盘,不用重启读到新加的硬盘
查看>>
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
《中国梦之声》新季开播 乐视生态“逆向造星”
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>