spring_Bean之间的关系

一:继承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>

猜你喜欢

转载自blog.csdn.net/qq_39093474/article/details/85268534