一:继承spring配置
1.spring允许继承Bean的配置,被继承的Bean的称为父Bean,继承这个父Bean的Bean称为子Bean。
2.子Bean从父Bean中继承配置,包括Bean的属性配置
3.子Bean也可以覆盖从父Bean继承过来的配置
4.父Bean可以作为模板,也可以作为Bean的实例,若只想把父Bean作为模板,可以设置Bean的abstract属性为true。这样spring将不会实例化这个Bean
5.并不是Bean元素里所有属性都会被继承,比如autowire,abstract。
6.也可以忽略父Bean的class属性,让子Bean指定自己的类而共享相同的属性设置,但此时父Bean的abstract必须设为true
二:代码实现
<?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(父Bean):Bean的abstract属性为true的bean,这样的bean不会被IOC容器实例化
只用来被继承配置,若某一个bean的class属性没有被指定,则该bean必须是一个抽象的bean,abstract属性必须设为true-->
<bean id="address"
p:city="beijing" p:street="sanxiaokou" abstract="true"></bean>
<!--bean配置的继承(子bean):使用Bean的parent属性指定继承那个bean的配置 -->
<bean id="address2" class="com.relation.dhx.Address"
parent="address"></bean>
<!-- 我们也可以重新覆盖父bean的属性 -->
<bean id="address3" class="com.relation.dhx.Address"
p:city="shanghai" p:street="tiananmen" parent="address"></bean>
</beans>
三:spring依赖bean配置
1.spring允许用户通过depends-on设定bean前置依赖的Bean,前置依赖的Bean会在本bean实例化之前创建好,
2.如果前置依赖与多个bean,则可以通过逗号,空格的方式配置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(父Bean):Bean的abstract属性为true的bean,这样的bean不会被IOC容器实例化
只用来被继承配置,若某一个bean的class属性没有被指定,则该bean必须是一个抽象的bean,abstract属性必须设为true-->
<bean id="address"
p:city="beijing" p:street="sanxiaokou" abstract="true"></bean>
<!--bean配置的继承(子bean):使用Bean的parent属性指定继承那个bean的配置 -->
<bean id="address2" class="com.relation.dhx.Address"
parent="address"></bean>
<!-- 我们也可以重新覆盖父bean的属性 -->
<bean id="address3" class="com.relation.dhx.Address"
p:city="shanghai" p:street="tiananmen" parent="address"></bean>
<bean id="car" class="com.relation.dhx.Car"
p:brand="audi" p:price="300000"></bean>
<!-- 要求在配置Person时,必须有一个关联的car,换句话说就是person这个bean依赖于car这个bean
如果有多个依赖的bean可以写成depends-on="car,address3" 或depends-on="car address3" -->
<bean id="person" class="com.relation.dhx.Person"
p:name="Tom" p:address-ref="address2" depends-on="car" ></bean>
</beans>