Spring 配置繼承

bwf_erg發表於2016-11-16

Spring IoC容器裡配置Bean時,可能存在這樣一種情況:多個Bean的配置有一部分是相同的,如果在每個Bean裡都分別進行配置,就會產生很多重複程式碼,而且也很麻煩。

一般產生相同的配置,往往有兩種情況:1.多個Bean需要注入相同的Bean;2.多個<bean>元素的屬性相同。第一種情況比較好處理,把需要注入相同的bean單獨配置,然後再注入到相關bean。第二種情況可以使用配置繼承實現。下面小博老師通過一個例子給大家演示這兩種情況的解決方案。

Dao類

  

 

ServiceA

  

ServiceB

  

ServiceAServiceB都引用了Dao物件,我們可以使用配置繼承的方法完成Spring Bean的配置檔案

  

service是一個純粹的模板,沒有配置class,指定了abstract屬性的值為true,所以spring在載入的時候,不會初始化service bean,只會把它當做一個模板配置。ServiceA及serviceB的parent屬性都是service bean所以都繼承了service的dao屬性配置,不再需要進行單獨配置。

總結

Bean可以作為配置模板,也可以作為Bean例項。不過,如果只想把父Bean作為模板不被例項化,那麼必須把abstract屬性設為true,這樣spring將不會例項化這個Bean。

注意:

1.並不是所有在父<bean>元素裡定義的屬性都會被繼承。例如,autowire和dependency-check屬性就不能被繼承。

2.Bean配置的繼承不是類的繼承,它們之間沒有任何關係。比如這個例子中ServiceA與ServiceB兩個類之間並沒有繼承關係,也沒有相同的父類,但可以實現配置繼承。

相關文章