今天我们来谈一下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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="address1"
p:city="厦门" p:stree="莲前街道"
abstract="true">
</bean>
<!--
parent :
- 指定bean的父bean,在这个配置中,address2叫做子bean,address1叫做父bean
- 子bean会继承父bean的配置(除了id,abstract,autowire等之外)
- 子bean也可以覆盖父bean的配置
- 在bean的配置中,如果想要将一个bean只作为父bean来使用,这种bean叫做模板bean,而被作为模板的bean是不会被SpringIOC容器实例化,这种bean我们叫做抽象bean
使用abstract 属性声明 abstract="true"表示是一个不会被IOC容器实例化的模板bean
- 抽象bean可以省略class属性,而且省略了class属性的bean必须配置为抽象bean
-->
<bean id="address2" class="com.nhkj.relation.Address" parent="address1" p:stree="马巷街道">
</bean>
</beans>
二. 依赖关系
<!--
depends-on 表示设置依赖
一个bean[address2] 依赖于 另外一个bean[address3] ,这个时候,address3 就会在address2实例化之前被实例化
-->
<bean id="address2" class="com.nhkj.relation.Address" parent="address1" p:stree="马巷街道" depends-on="address3">
</bean>
<bean id="address3" class="com.nhkj.relation.Address" parent="address1" p:stree="杏林街道">
</bean>
小结
继承关系和依赖关系的讲解已经写在注解中了
另外,如果希望一个bean只作为父bean的且不被实例化的话,那么需要声明它的abstract属性为true