2013-02-12 63 views
0

由於依賴注入意味着控制反轉,我看不到國際奧委會在下面的調用:在Spring中使用依賴注入調用ApplicationContext.getBean()嗎?

Car car = (Car)ApplicationContext.getBean("car"); 

這不是春天摸出自己的班,因爲我寫了自己車到代碼。

而且,所有的書講兩種DI的:setter和構造DI。

所以我在想,如果調用ApplicationContext.getBean()暗示任何種類的依賴注入和IOC或沒有DI可言。

回答

1

號獲取你的bean這種方式是不依賴注入。它沒有被注射。該bean的字段可能被注入。

有時候真的沒有辦法解決它,但在一般情況下,儘量避免這種情況。

0

因爲我自己寫了Car到代碼中,所以這不是Spring自己制定的課程。

在這種情況下,您將得到NoSuchBeanDefinitionException。你需要告訴Spring它需要管理的每個類 - 有多種方法可以做到這一點,從自動裝配到描述符中的顯式定義。

0

getBean的確使用與Spring的注入相同的配置(applicationContext),但您的示例並未使用任何依賴注入。 (嗯,Car bean可以注入它的依賴關係,所以我們不知道你的例子)。

但通常依賴注入意味着你不需要自己做任何編程設定(車車=東西)。 Spring容器將爲您創建car實例,並使用car的setter或它的構造函數將注入x需要工作的依賴關係。

0

我不知道爲什麼都試圖讓以這種方式轎廂基準...如果你想使用另一個類車的參考,你可以簡單地使用setter方法或構造函數注入你said..If你按照上面的方式使用它,我看不到任何類型的DI。我們可以肯定地說的一件事是,當你試圖從應用程序上下文獲取引用時,bean由IOC容器管理。 ..