Spring Bean继承的简介说明
Bean定义包含了很多信息
如:配置信息、构造函数参数、属性值和容器的一些具体信息
如初始化方法、销毁方法等。
如:配置信息、构造函数参数、属性值和容器的一些具体信息
如初始化方法、销毁方法等。
- 子Bean可继承父Bean中的配置数据,也可在需要时,重写值及添加其他值
- Spring Bean定义的继承同Java中的继承无任何关系 您只需将父Bean 的定义作为一个模板,其它子 Bean 从父 Bean 中继承所需的配置
- 配置文件中可使用parent 属性来设置继承的父Bean
- 例: 下文将通过示例的方式将Bean继承的操作方法,如下所示:
- 创建 SpringDemo 项目,并在 src 目录下创建 com.java265 包
- 添加相应的 jar 包,可以参考我的第一个Spring程序
- 在 com.java265 包下创建 HelloWorld、HelloChina 和 MainApp 类
- 在 src 目录下创建 Spring 配置文件 Beans.xml
- 运行 SpringDemo 项目
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 文件代码如下<!--?xml version="1.0" encoding="UTF-8"?--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean class="com.java265.HelloWorld" id="helloWorld"> <property name="message1" value="Hello World!"> <property name="message2" value="Hello World2!"> </property></property></bean> <bean class="com.java265.HelloChina" id="helloChina" parent="helloWorld"> <property name="message1" value="Hello China!"> <property name="message3" value="Hello China3!"> </property></property></bean> </beans>
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,只可被继承不能被实例化
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="beanTeamplate" abstract="true"> <property name="message1" value="Hello World!" /> <property name="message2" value="Hello World2!" /> <property name="message3" value="Hello World3!" /> </bean> <bean id="helloChina" class="com.java265.HelloChina" parent="beanTeamplate"> <property name="message1" value="Hello China!" /> <property name="message3" value="Hello China!" /> </bean> </beans>
- 例: 下文将通过示例的方式将Bean继承的操作方法,如下所示:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。