Spring 继承配置信息

1. bean配置信息重用

parent只是重用了另一个Bean组件的配置信息,要覆盖的就重新设置,不变的就复用配置信息。但并不是説当前Bean继承另一个Bean,这不是类的继承关系

1
2
3
4
5
6
7
8
9
10
<bean id="car1" class="bean.Car">
<property name="name" value="car1" />
<property name="price" value="5000.0" />
</bean>

<!-- parent: 指定要重用哪个Bean组件的配置信息 -->
<bean id="car2" class="bean.Car" parent="car1">
<!-- 覆盖配置信息 -->
<property name="name" value="car2" />
</bean>

编写测试方法,可以看到属性的配置继承下来了

1
2
3
4
5
6
@Test
public void testIoc() throws Exception {
ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) ioc.getBean("car");
System.out.println(car);
}

2. abstract声明模板Bean

1
2
3
4
5
6
7
8
9
<!-- abstract声明当前Bean不会被Spring实例化,只是作为一个配置模板,供其它Bean组件去继承 -->
<bean id="carTemplate" class="bean.Car" abstract="true">
<property name="name" value="car1" />
<property name="price" value="5000.0" />
</bean>

<bean id="car" class="bean.Car" parent="carTemplate">
<property name="name" value="car2" />
</bean>

尝试获取模板Bean

1
2
3
4
5
@Test
public void testIoc() throws Exception {
ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
Car carTemplate = (Car) ioc.getBean("carTemplate");
}

运行,抛出异常,abstract Bean不能被实例化,所以无法从IOC容器中获取

1
org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'carTemplate': Bean definition is abstract

panchaoxin wechat
关注我的公众号
支持一下