我想我發現了一個令人困惑的問題。 我有包下兩個類 '曹' 一個是:Spring @Autowired令人困惑
@Repository
public class MovieFinder {
}
另一個是:
public class SimpleMovieLister {
@SuppressWarnings("SpringJavaAutowiringInspection")
@Autowired
private MovieFinder movieFinder;
public MovieFinder getMovieFinder() {
return movieFinder;
}
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
}
在應用程序的XML文件,我定義如下
<bean class="cao.SimpleMovieLister"/>
<context:component-scan base-package="cao"/>
<bean id="1" class="cao.MovieFinder"/>
然後程序可以正常運行。 但令我困惑的是,現在我們有兩個類型的MovieFinder實例。爲什麼不拋出異常?
將@Repository更改爲@Repository(value =「2」)後,會引發期望的異常。 WOW,請幫助我。 非常感謝。
你是什麼意思「我們有兩個類型MovieFinder的實例」?你期望拋出什麼異常? – 2013-05-05 05:33:13
我的意思是現在我們有兩個來自IoC的實例。一個是通過 顯式實例化的實例,另一個是由組件掃描機制。當面對@ Autowired時,它不應該拋出一個超過1個候選人的例外嗎? –
user2351281
2013-05-06 09:30:36
是什麼讓你認爲你有兩個IoC實例?如果不需要,@Autowired不會創建對象。 – 2013-05-06 09:32:16