Spring Bean的继承
bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等。
子 bean 的定义继承父定义的配置数据。子定义可以根据需要重写一些值,或者添加其他值。
Spring Bean 定义的继承与 Java 类的继承无关,但是继承的概念是一样的。你可以定义一个父 bean 的定义作为模板和其他子 bean 就可以从父 bean 中继承所需的配置。
当你使用基于 XML 的配置元数据时,通过使用父属性,指定父 bean 作为该属性的值来表明子 bean 的定义。
看个例子:
创建一个POJO,包含两个属性message1和message2.
package com.sap;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);}}
再创建一个HelloIndia, 这个类和HelloWorld没有任何继承关系上的关联:
public class HelloIndia {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("India Message1 : " + message1);}public void getMessage2(){System.out.println("India Message2 : " + message2);}public void getMessage3(){System.out.println("India Message3 : " + message3);}
}
bean.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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloWorldJerry" class="com.sap.HelloWorld"><property name="message1" value="Hello World!"/><property name="message2" value="Hello Second World!"/></bean><bean id="helloIndia" class="com.sap.HelloIndia" parent="helloWorldJerry"><property name="message1" value="Hello India!"/><property name="message3" value="Namaste India!"/></bean>
</beans>
HelloWorld通过beans.xml注入了属性message1和message2,HelloIndia注入了属性message1和message3:
MainApp.java:
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("helloWorldJerry");objA.getMessage1();objA.getMessage2();HelloIndia objB = (HelloIndia) context.getBean("helloIndia");objB.getMessage1();objB.getMessage2();objB.getMessage3();}
}
输出:
World Message1 : Hello World!
World Message2 : Hello Second World!
India Message1 : Hello India!
India Message2 : Hello Second World!
India Message3 : Namaste India!
我们可以观察到,对于helloIndia,虽然我们没有在beans.xml里注入属性message2,但其仍然从parent bean即helloworld里继承了message2的属性值。
bean的parent除了是另一个bean外,也可以是一个模板(template),比如:
<bean id="beanTeamplate" abstract="true"><property name="message1" value="Hello World!"/><property name="message2" value="Hello Second World!"/><property name="message3" value="Namaste India!"/></bean>
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
Spring Bean的继承相关推荐
- Spring bean配置继承
在 Spring,继承是用为支持bean设置一个 bean 来分享共同的值,属性或配置. 一个子 bean 或继承的bean可以继承其父 bean 的配置,属性和一些属性.另外,子 Bean 允许覆盖 ...
- Spring Bean 定义继承
转载自 Spring Bean 定义继承 Bean 定义继承 bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等. 子 bean 的 ...
- 【Spring】Spring Bean 定义继承
Spring Bean 定义继承 bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等. 子 bean 的定义继承父定义的配置数据.子定 ...
- Spring教程——Spring Bean继承
在 Spring 中,Bean 和 Bean 之间也存在继承关系.我们将被继承的 Bean 称为父 Bean,将继承父 Bean 配置信息的 Bean 称为子 Bean. Spring Bean 的定 ...
- 【一步一步学习spring】spring bean管理(上)
1. spring 工厂类 我们前边的demo中用到的spring 工厂类是ClassPathXmlApplicationContext,从上图可以看到他还有一个兄弟类FileSystemApplic ...
- Spring8:一些常用的Spring Bean扩展接口
前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...
- 带你读懂Spring Bean 的生命周期,嘿,就是玩儿~
带你读懂Spring Bean 的生命周期,嘿,就是玩儿~ 一.前言 今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象.因为 Spring Bean 的 ...
- spring bean加载过程_Spring源码剖析3:Spring IOC容器的加载过程
本文转自五月的仓颉 https://www.cnblogs.com/xrq730 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...
- Spring IOC-BeanFactory的继承体系结构
本文主要介绍BeanFactory以及它的各种继承层级的接口.抽象类及实现类,因为内容很多,所以这里不介绍ApplicationContext继承体系下的类(虽然ApplicationContext本 ...
最新文章
- 简单的Linux扫描仪应用:C语言实现
- 如何保障消息中间件 100% 消息投递成功?如何保证消息幂等性?
- ubuntu16.04 配置nginx支持redis
- 想要酷炫大气的网页设计?这样做超吸睛
- linux screen vim 颜色不一样,tmux中的Vim显示错误的颜色
- 数据结构笔记(十)-- 循环队列
- Transact-SQL 参考的语法
- 我必须得告诉大家的 MySQL 优化原理
- 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器
- Eclipse优化设置技巧
- 获取火山无水印视频方法
- 小米无线路由器服务器用户名和密码忘了,小米路由器管理密码忘记了怎么办?...
- 软件测试 因果+决策案例--中国象棋中走马
- 一个屌丝程序猿的人生(一百二十)
- 手脱 FSG 1.0 壳
- 柏诚股份冲刺上交所:年营收27.4亿 拟募资4.7亿
- 计算平均值和标准方差。
- MuleSoft知识总结-7.使用Anypoint Studio
- 那一场呼啸而过的青春
- 详解微信「看一看」多模型内容策略与召回