2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
默認(rèn)情況下@Autowired
會(huì)嘗試按類(lèi)型查找 bean。在您的BookBean
課堂上,您正在注入 aString title
和 a List<String> authors
。
Spring 在引擎蓋下做了什么?
字符串標(biāo)題- 它會(huì)找到一個(gè)String 類(lèi)型的 Bean (如果它找到多個(gè),它需要一個(gè) @Qualifier 來(lái)確定要注入哪個(gè)),在你的情況下@Bean String title()
列出作者- 它會(huì)嘗試查找所有String 類(lèi)型的 Bean,在您的場(chǎng)景中,您只有一個(gè):title()
總而言之,除非您使用注入它,否則您的List<String> authors()
bean 將無(wú)法訪問(wèn)。@Resource(id ="authors")
退后幾步,你不應(yīng)該依賴(lài)原語(yǔ)進(jìn)行依賴(lài)注入,因?yàn)樗鼈兛赡軙?huì)誤導(dǎo)你。如果你真的需要使用依賴(lài)注入,我建議將它們包裝在一些類(lèi)中,也就是定義一個(gè)Title
類(lèi)和一個(gè)Authors
類(lèi)。

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)類(lèi)型化集合或數(shù)組上存在 @Bean 注釋時(shí),該 bean 將自動(dòng)填充應(yīng)用程序上下文注冊(cè)的該類(lèi)型的所有 bean(請(qǐng)參閱參考文檔)。在您的情況下,這是title
ben ( A sample book
),因此authors
列表僅包含該條目。
如果您想自動(dòng)裝配特定的 bean,您可以使用@Qualifier
注解引用名稱(chēng)(請(qǐng)參閱參考文檔)。
在您的情況下,構(gòu)造函數(shù)可以重寫(xiě)為:
@Autowired
public BookBean(String title, @Qualifier("authors") List<String> authors) {
this.title = title;
this.authors = authors;
}
當(dāng)使用類(lèi)型化集合時(shí),參考文檔實(shí)際上是建議的(在灰色部分下方向下滾動(dòng)一點(diǎn))。您要使用 @Resource 注釋?zhuān)?/p>
private String title;
@Resource
private List<String> authors;
public BookBean(String title) {
this.title = title;
}
添加回答
舉報(bào)