Spring配置文件中parent与abstract的使用
Spring配置文件parent与abstract
其实在基于spring框架开发的项目中,如果有多个bean都是一个类的实例,如配置多个数据源时,大部分配置的属性都一样,只有少部分不一样。
这样的话在配置文件中可以配置和对象一样进行继承。
例如
<bean id="testParent" abstract="true" class="com.bean.TestBean"> <property name="param1" value="父参数1"/> <property name="param2" value="父参数2"/> </bean> <bean id="testBeanChild1" parent="testParent"/> <bean id="testBeanChild2" parent="testParent"> <property name="param1" value="子参数1"/> </bean>
其中 abstract="true" 的配置表示:此类在Spring容器中不会生成实例。
parent="testBeanParent" 代表子类继承了testBeanParent,会生成具体实例,在子类Bean中配置会覆盖父类对应的属性。
spring使用parent属性来减少配置
在基于spring框架开发的项目中,如果有多个bean都是一个类的实力,如配置多个数据源时,大部分配置的属性都一样,只有少部分不一样,经常是copy上一个的定义,然后修改不一样的地方。其实spring bean定义也可以和对象一样进行继承。
示例如下:
<bean id="testBeanParent" abstract="true" class="com.wanzheng90.bean.TestBean"> <property name="param1" value="父参数1"/> <property name="param2" value="父参数2"/> </bean> <bean id="testBeanChild1" parent="testBeanParent"/> <bean id="testBeanChild2" parent="testBeanParent"> <property name="param1" value="子参数1"/> </bean>
testBeanParent是父bean,其中abstract=“true”表示testBeanParen不会被创建,类似于于抽象类。其中testBeanChild1、testBeanChild2继承了testBeanParent、,其中testBeanChild2重新对param1属性进行了配置,因此会覆盖testBeanParent
对param1属性属性的配置。
代码如下:
TestBean
public class TestBean { private String param1; private String param2; public String getParam1() { return param1; } public void setParam1(String param1) { this.param1 = param1; } public String getParam2() { return param2; } public void setParam2(String param2) { this.param2 = param2; } }
App:
public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml"); TestBean testBeanChild1 = (TestBean) context.getBean("testBeanChild1"); System.out.println( testBeanChild1.getParam1()); System.out.println( testBeanChild1.getParam2()); TestBean testBeanChild2 = (TestBean) context.getBean("testBeanChild2"); System.out.println( testBeanChild2.getParam1()); System.out.println( testBeanChild2.getParam2()); } }
app main函数输出:
父参数1
父参数2
子参数1
父参数2
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot使用PropertiesLauncher加载外部jar包
这篇文章主要介绍了SpringBoot使用PropertiesLauncher加载外部jar包,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-07-07SpringBoot集成JWT生成token及校验方法过程解析
这篇文章主要介绍了SpringBoot集成JWT生成token及校验方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-04-04Spring Security系列教程之会话管理处理会话过期问题
会话过期,是指当用户登录网站后,较长一段时间没有与服务器进行交互,将会导致服务器上的用户会话数据(即session)被销毁。这篇文章主要介绍了Spring Security系列教程之会话管理处理会话过期问题,需要的朋友可以参考下2021-10-10springboot项目实现多数据源配置使用dynamic-datasource-spring-boot-starter
这篇文章主要介绍了springboot项目实现多数据源配置使用dynamic-datasource-spring-boot-starter,本文分步骤结合实例代码给大家介绍的非常详细,需要的朋友可以参考下2023-06-06
最新评论