Spring中Bean的裝配方式

Bean的裝配可以理解爲DI,也就是Bean依賴注入的方式。下面對常見的三種方式進行總結。


基於XML的裝配

設置注入(Setter Injection)

要滿足兩個要求:一是Bean類必須提供一個默認的無參構造函數,二是Bean類必須爲需要注入的屬性提供相應的setter方法。使用的是<bean>元素的子元素<property>爲屬性注入值。

構造注入(Constructor Injection)

提供一個帶參的構造函數。使用的是<bean>元素的子元素<constructor-arg>爲屬性注入值。

 


基於註解(Annotation)

雖然使用基於XML配置文件的方式可以實現Bean的裝配。但是若應用程序中存在很多Bean的時候會導致配置文件的臃腫。從而不利於後續的維護和升級。

常見的註解:

@Component:

使用此註解描述Spring中的Bean。但是一個泛化概念,僅僅表示一個組件,且可以使用在任何層次。使用時僅僅需要將該註解標記到相應的類上即可

@Repository:

功能與@Component相同,作用於數據訪問層(DAO)

@Service

功能與@Component相同,作用於業務層(Service)

@Controller

功能與@Component相同,作用於控制層(Controller)

@Authowired

配合對應的註解處理器,完成Bean的自動配置工作,默認是按照Bean的類型進行裝配

@Resource:

作用和@Authowired一樣。區別在於默認是先按照Bean的實例名稱進行裝配,。其中有name和type兩個屬性。指定name則按照實例名稱裝配,指定type則按照實例類型裝配。不指認的情況下先按照實例名稱裝配,匹配不成功按照實例類型裝配,若是都無法匹配成功,則拋出NoSuchBeanDefinitionException異常。

 

與XML方式相比簡化了DI的配置,即不需要配置子元素<property>或者<constructor-arg>。但是同樣需要在配置文件中配置相應的Bean。因此可以採用進行包掃描的方式。


自動裝配

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章