概要:
‘
繼承Bean配置
- Spring同意繼承bean的配置,被繼承的bean稱為父bean。繼承這個父Bean的Bean稱為子Bean
- 子Bean從父Bean中繼承配置,包含Bean的屬性配置
- 子Bean也能夠覆蓋從父Bean繼承過來的配置
- 父Bean能夠作為配置模版,也能夠作為Bean實例,若僅僅想把父Bean作為模版,能夠配置<bean>的abstract屬性為true。這樣Spring將不會實例化這個Bean
- 並非<bean>元素里的全部屬性都會被繼承。比方:autowire,abstract等。
- 也能夠忽略父Bean的class屬性,讓子Bean指定自己的類,而共享同樣的屬性配置,但此時abstract必須設為true
依賴Bean配置
- Spring同意用戶通過depends-on屬性設定Bean前置依賴的Bean,前置依賴的Bean會在本Bean實例化之前創建好
- 假設前置依賴於多個Bean,則能夠通過逗號,空格或的方式配置Bean的名稱
實例代碼具體解釋
代碼結構:

Main.java
package com.coslay.beans.relation; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.coslay.beans.autowire.Address; import com.coslay.beans.autowire.Person; public class Main { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-relation.xml"); Address address = (Address) ctx.getBean("address3"); System.out.println(address); address = (Address) ctx.getBean("address2"); System.out.println(address); Person person = (Person) ctx.getBean("person"); System.out.println(person); } }
<?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的abstract屬性為true的bean。這樣bean不能被IOC容器實例化。僅僅能用來被繼承繼承 若某一個bean的class屬性沒有指定,則該bean必須是一個抽象bean--> <bean id="address" p:city="Beijing" p:street="WuDaoKou" abstract="true"></bean> <!-- <bean id="address2" class="com.coslay.beans.autowire.Address" p:city="Beijing" p:street="DaZhongSi"></bean> --> <!-- bean 配置的繼承:使用bean 的parent 屬性指定繼承哪個baen的配置 --> <bean id="address2" class="com.coslay.beans.autowire.Address" parent="address"></bean> <bean id="address3" class="com.coslay.beans.autowire.Address" p:street="DaZhongSi" parent="address2"></bean> <bean id="car" class="com.coslay.beans.autowire.Car" p:brand="Audi" p:price="300000"></bean> <!-- 要求在配置Person時。必須有一個關聯的car!換句話說person這個bean依賴於Car這個bean --> <bean id="person" class="com.coslay.beans.autowire.Person" p:name="Tom" p:address-ref="address2" depends-on="car"></bean> </beans>