讓我們想象一下,有1000個類(X1 ... X1000),它們都在庫中定義。一個關於Spring的簡單問題IoC
的X *類已經使用了一些JSR-330註解,比如:
class X12 {
@Inject
Foo foo;
@Inject
Bar bar;
}
我的主類是一個測試用例@RunWith(SpringJUnit4ClassRunner.class)
,並且引用Foo
,Bar
在bean的XML文件中明確界定。
問題是,我不想在任何XML文件中定義X1 ... X1000。但我想自動連線它們,例如:
X173 x173 = new X173();
但問題是,使用Java新實例,foo/bar沒有連線。
這還沒有作品:
X173 x173 = applicationContext.getBean(X173.class);
因爲X173沒有豆定義。
而且,X173也可能包含類X258的成員,它也應該連線。在解決這個問題之前,我無法弄清楚如何實現它。
不幸的是,類名是任意的。嗯..我認爲'組件掃描'會得到不必要的副作用。當我編寫'applicationContext.getBean(X173.class)'時,我確切地知道將會注入什麼,但'component-scan'看起來很粗糙。 – 2011-03-07 10:41:45
+1很好答案。 – Nilesh 2011-03-07 10:49:40
@繼雷'Lenik:你的問題違背了Spring的概念,因爲Spring從預定義的bean定義中創建bean,而不是以特別的方式。您可以使用'applicationContext.getAutowireCapableBeanFactory()。createBean(X173.class)'創建一個沒有定義的bean,但它不滿足最後一項要求(bean的相互依賴關係)。 – axtavt 2011-03-07 11:17:44