Bean的自動裝配
- 經過
@ComponentScan
掃描發現將要裝配到ApplicationContext
中的Bean
。@ComponentScan
中若是沒有寫包名,那麼默認掃描當前修飾類同包名。經過掃掃描裝配的類有一個默認ID,就是把類的名字首字母小寫的類名。
- 經過@Autowire知足Bean的依賴,依賴的地方能夠寫接口,可是若是在容器中沒有實現類或者有多個實現類的時候,報出裝配異常。
- @Configuration用來修飾一個類,表示這個類是用來生成Bean用的,若是這個類上有ComponentScan,則自動裝配。若是這個類的方法有@Bean修飾,就成爲第二種Bean的裝配方式:Java代碼生成Bean;
- 要自動裝配的類要保留默認構造函數,須要裝配的屬性使用@Autowire來裝配。
Java代碼裝配Bean
- 在一些狀況下,第三方的類庫中的類想要歸入到容器管理,這種狀況自動裝配是實現不了的。只能採用顯示裝配。顯示裝配分爲兩種,一種是Java代碼裝配,一種是Xml裝配。JavaConfig文件使用Java類書寫,不含有任何的業務邏輯,只是裝配Bean的配置信息,通常在項目中分開到單獨的包中書寫。
- 使用@Configuration標註一個類成爲配置類。
使用@Bean修飾一個方法來表示在容器中實例化一個類。在被@Bean修飾的方法中,能夠使用任何一種方式構建一個Bean並返回,返回的對象實例會被註冊到容器中。默認狀況下,裝配的Bean的ID是方法的名字。
使用Xml配置:
基本配置
<beans>
<bean id="person" class="com.example.Person" />
</beans>
- 其中bean屬性的ID能夠省略,會自動生成一個全類名#No樣子的ID名稱。
和JavaConfig相比,上面這種形式的xml中的Bean是Spring調用默認構造函數生成的。
也能夠使用下面的構造函數的參數的方式來進行裝配Bean:
<bean id="cdPlayer" class="soundsystem.CDPlayer">
<constructor-arg ref="compactDisc" />
</bean>
- 在一個Spring環境的應用中,Bean裝配方式能夠混合。在進行依賴注入的時候,Autoware並不區分Bean的構造來源。