它提供了三種主要的裝配機制:測試
在XML中進行顯式配置。ui
在Java中進行顯式配置。spa
隱式的bean發現機制和自動裝配。設計
2.2 自動化裝配bean3d
2.2.1 建立可被發現的bean,並裝配component
概述:xml
若是Spring可以進行自動化裝配的話,那何苦還要顯式地將這些bean裝配在一塊兒呢?blog
Spring從兩個角度來實現自動化裝配:接口
組件掃描(component scanning):Spring會自動發現應用上下文中所建立的bean。ci
自動裝配(autowiring):Spring自動知足bean之間的依賴。
設計理念:@Component註解+@Autowired+接口 利用Java的接口的多肽和Spring的自動裝配配合對有依賴的代碼組件進行合理的解耦。
1. 掃描設置:
方式1:@ComponentScan+@Configuration註解:默認會掃描與配置類相同的包。由於CDPlayerConfig類(配置 類)
位於soundsystem包中,所以Spring將會掃描這個包以及這個包下的全部子包,查找帶有@Component註解的類。
@ComponentScan(basePackages={「pack1」,」pack2」})
@ComponentScan(basePackageClasses={「Class1.class」,」Class2.class」})
例子:
方式2:XML <context:component-scan base-package=「」>
2. 爲組件掃描的bean命名:
方式1:默認Spring會根據類名爲其指定一個ID,將類名的第一個字母變爲小寫 相似於 financialService
方式2: @Component(「financialService」)
方式3:Java依賴注入規範(Java Dependency Injection)中所提供的@Named註解 (不多用)
3. 自動裝配
@Autowired註解
1.用在構造器上
2.用在屬性的Setter方法上
3.用在屬性上
4.無論是構造器、Setter方法仍是其餘的方法,Spring都會嘗試知足方法參數上所聲明的依賴。假
若有且只有一個bean匹配依賴需求的話,那麼這個bean將會被裝配進來。
5.@Autowired的required屬性設置爲false:沒有匹配的bean,不會拋出異常。
4.顯式配置
1.Java
1.建立JavaConfig配置類,爲其添加@Configuration註解
2.在JavaConfig中聲明bean,咱們須要編寫一個方法,這個方法會建立所需類型的實例,而後
給這個方法添加@Bean註解。
2.XML
1. 建立一個XML文件,而且要以<beans>元素爲根
2. 聲明一個簡單的<bean>
@RunWith(SpringJUnit4ClassRunner):在測試開始的時候自動建立Spring的應用上下文。
@ContextConfiguration(classes=「配置類.class」 或者xml路徑) 會告訴它須要怎麼加載配置