一直再用Spring,但是僅限於使用,也沒有系統學習過,最近抽空開始系統學些一下,以spring in action作爲參考,以下內容大部分摘自spring in action,僅限於自己學習。
1.裝配
創建對象之間的協作關係稱爲裝配,這是依賴注入的本質
Spring容器負責創建bean,並通過DI來協調對象之間的關係。
Spring有三種裝配機制:
1)XML中進行顯式配置
2)在Java中進行配置
3)隱式的bean發現機制和自動裝配
2.Spring自動裝配bean
1)自動掃描:自動發現應用上下文中創建的bean
2)自動創配:Spring自動滿足bean之間的依賴
自動化裝配bean:
@Component("name"):表明該類會作爲組件類,name表示組件bean的名字,@Component可以用Java依賴注入規範中的@Name("name")替換
@ComponentScan(basePackageClasses={xxxx1.class}):Spring中啓用組件掃描(默認掃描與配置相同的包),對應於XML中<context:component-scan>元素,其中basePackageClasses可用basePackages="com.xx.aaa"(包名)替代
由於過程中用到了Junit模擬Spring環境,加載Spring容器,順帶兩個註解:
@RunWith(SpringJunit4ClassRunner.class):便於在測試開始的時候自動創建Spring的應用上下文(模擬Spring環境)
@ContextConfiguration(classes=xxxx.class):表明需要在xxx中加載配置(配置文件(Java或者XML文件))
實現自動裝配:
@AutoWired:可以用在任何方法上(以下是三種方式)
@AutoWired
private CDPlayer cd;
@AutoWired
public CDPlayer(CompactDisc cd){
this.cd = cd;
}
//注入Name對象
@AutoWired
public void setName(Name name){
this.name = name;
}
@Inject可以替代@Autowired
3.Java代碼裝配Bean
當我們裝配的組件來自第三方時,無法用註解裝配,此時需要顯式配置,推薦使用JavaConfig(不是XML),因爲其更強大、安全、對重構友好
@Configuration:表明這個類是一個配置類
@Bean(name=”xxx”):對應的方法會返回一個bean對象,默認與帶有該註解的方法名一致
在JavaConfig中裝配bean的方式:引用創建bean的方法
@Bean
public CDPlayer cdPlayer(){
return new CDPlayer(compactDisc());
}
//使CompactDisc作爲方法參數(推薦,不必須在同一個配置類中)
@Bean
public CDPlayer cdPlayer(CompactDisc cd){
return new CDPlayer(cd);
}
JavaConfig可以使用任何必要的Java功能產生bean實例。
以上僅是個人總結自Spring in Action。