詳解Spring@AutoWired多種方式的依賴注入

在Spring框架進(jìn)行bean對象依賴注入時,@Autowired利用可以對成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,來完成自動裝配的工作。
@Autowired可標(biāo)注在成員變量,也可以標(biāo)注在成員變量的set方法上,以及類得構(gòu)造函數(shù)上。

  • Spring會直接將UserDao類型的唯一一個bean賦值給userDao這個成員變量:
@Autowired
UserDao userDao;
  • Spring會調(diào)用setUserDao方法來將UserDao類型的唯一一個bean裝配到userDao這個屬性。
@Autowired
UserDao setUserDao(UserDao userDao)
{
    this.userDao = userDao;
}
  • 類似于set方法,標(biāo)注在構(gòu)造函數(shù)上。
@Autowired
Service(UserDao userDao)
{
    this.userDao = userDao;
}

對于標(biāo)注在成員變量上的方式,通常的做法是標(biāo)注在單個類型的變量上,Spring框架提供了強(qiáng)大的DI能力能夠?qū)崿F(xiàn)對Collection類型的自動注入。

List類型自動注入

當(dāng)程序中定義了多個相同類型的bean時,如

public interface Converter {

}

public class BookConverter implements Converter {

}

public class CustomerConverter implements Converter {

}

public class AuthorConverter implements Converter {

}

在需要注入以上3個bean的類中聲明

List<Converter> converters;

Spring會自動從容器中取出這三個相同類型的bean裝配到List類型的converters中,從而簡化了依賴注入的過程。

Map類型自動注入

在需要注入以上3個bean的類中聲明

Map<String,Converter> converters;

此時,Spring會自動從容器中取出這三個相同類型的bean以及bean的名稱,注入到Map類型的converters中,此時該map得key對應(yīng)為bean的名稱,value則為對應(yīng)bean對象。
程序中可使用如下方式獲取對象bean

converter.get("BookConverter")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 來源:關(guān)于Spring IOC (DI-依賴注入)你需要知道的一切作者:zejian Dao層(AccountDa...
    楊井閱讀 5,364評論 0 27
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,951評論 6 342
  • 如下是整篇文章的結(jié)構(gòu),所需閱讀時間大約20min Spring簡介 Spring框架由Rod Johnson開發(fā),...
    李序鍇閱讀 903評論 0 15
  • Spring簡介 spring框架由Rod Johnson開發(fā),2004年發(fā)布了Spring框架的第一版。Spri...
    qiuqiu_hz閱讀 1,082評論 0 15