Spring 配置繼承
在Spring IoC容器裡配置Bean時,可能存在這樣一種情況:多個Bean的配置有一部分是相同的,如果在每個Bean裡都分別進行配置,就會產生很多重複程式碼,而且也很麻煩。
一般產生相同的配置,往往有兩種情況:1.多個Bean需要注入相同的Bean;2.多個<bean>元素的屬性相同。第一種情況比較好處理,把需要注入相同的bean單獨配置,然後再注入到相關bean。第二種情況可以使用配置繼承實現。下面小博老師通過一個例子給大家演示這兩種情況的解決方案。
Dao類:
ServiceA:
ServiceB:
ServiceA、ServiceB都引用了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兩個類之間並沒有繼承關係,也沒有相同的父類,但可以實現配置繼承。
相關文章
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- Spring Bean 定義繼承SpringBean繼承
- 原型,繼承——原型繼承原型繼承
- 菱形繼承,虛繼承繼承
- 多繼承 與 多重繼承繼承
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承
- Spring系列第十三講 使用繼承簡化bean配置(abstract & parent)Spring繼承Bean
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- 繼承繼承
- C++繼承一之公有繼承C++繼承
- JS原型繼承和類式繼承JS原型繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- 公有繼承、私有繼承和保護繼承之間的對比繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 類的繼承_子類繼承父類繼承
- JavaScript繼承JavaScript繼承
- JavaScript 繼承JavaScript繼承
- 多繼承繼承
- Java繼承Java繼承
- javascript:繼承JavaScript繼承
- swift繼承Swift繼承
- js繼承JS繼承
- 虛繼承繼承
- 10 #### 繼承繼承
- python 基礎之繼承、重寫、多繼承Python繼承
- PostgreSQL 表繼承SQL繼承
- 16-繼承繼承
- 粗談繼承繼承
- 原型和繼承原型繼承
- javascript之繼承JavaScript繼承
- JavaScript class 繼承JavaScript繼承
- JavaScript extends 繼承JavaScript繼承
- Javascrip—繼承(10)Java繼承
- 類的繼承繼承
- Swift-繼承Swift繼承
- PostgreSQL:表繼承SQL繼承