繼承Bean配置
Spring允許繼承bean的配置,被繼承的bean稱為父bean,繼承這個父Bean的Bean稱為子Bean
子Bean從父Bean中繼承配置,包括Bean的屬性配置
子Bean可以覆蓋從父Bean繼承過來的配置
父Bean可以作為配置模版,也可以作為Bean實例。若只想把父Bean作為模版,可以設置<bean>的abstract屬性為true,這樣的String將不會實例化這個Bean
並不是<bean>元素里的所有屬性都會被繼承。比如:autowir、eabstract等,
也可以忽略父Bean的class屬性,讓子Bean指定自己的類,而共享相同屬性配置,但此時abstract必須設置為true
<!--抽象Bean:bean的abstract屬性為true的bean,這樣的bean不能被IOC容器實例化,只用來被繼承配置. 若某一個bean的class屬性沒有指定,則該bean必須是一個抽象bean --> <bean id="address" class="cn.bdqn.spring.Address" p:ciyt="beijing" p:street="wudaokou" abstract="true"></bean> <bean id="a1" class="cn.bdqn.spring.Address" p:street="肖家河" parent="address"> </bean> |
Bean之間的依賴關系
Spring允許用戶通過depends-on屬性設定Bean前置依賴的Bean,前置依賴的Bean會在本Bean實例化之前創建好
如果前置依賴於多個Bean,可以通過逗號,空格或的方式配置Bean的名稱
<bean id="person" class="cn.bdqn.spring.Person" p:name="zhangsna" p:age="23" depends-on="car"> </bean> <bean id="car" class="cn.bdqn.spring.Car" p:brand="ford" p:price="100000"></bean> |
Spring 中bean 的繼承和Java 中bean 的繼承有如下區別:
1、Spring 中的子bean 和父bean 可以是不同類型,但在Java 中的,子類是對父類的加強,是一種特殊的父類。
2、Spring 中bean 的繼承是實例之間的關系,主要表現為參數值的延續:而Java 中的繼承是類與類之間的關系,主要表現為方法及屬性的延續。
3、Spring 中子bean 不可作父bean 使用,不具備多態'性:而Java 中的子類實例完全可當成父類實例使用。
<bean id="person" class="cn.bdqn.spring.Person" p:name="zhangsna"p:age="23" depends-on="car"></bean><bean id="car" class="cn.bdqn.spring.Car" p:brand="ford" p:price="100000"></bean>