2016-06-23 67 views
0

我對自動裝配和春天依賴注入有點糊塗了。是自動裝配衝突春天依賴注入

彈簧依賴注入使您能夠移除任何特定的依賴關係 一個類可能具有其他類或第三方接口,並在構建時將這些依賴關係加載到類中。

但在使用自動裝配Autowired註解,我們以編程方式在Java類中編寫的接口名稱或類名注入豆。

@Autowired 
public final Interface object; 

這是不是衝突的春天依賴注入?因爲如果我們用XML定義bean,我們可以在不改變實際的Java代碼的情況下隨時更改它。但是使用註釋我們必須更改java代碼。

+1

「可以刪除任何特定的相關類可能對其他類或第三方接口」:不,你在具體的實現依賴刪除,這意味着它可能是你自動裝配什麼的任何亞型。與XML配置完全相同(唯一的區別是代碼中缺少'@ Autowired'註釋)。 – zapl

+0

@Autowired(技術上稱爲組件掃描)和舊風格的XML配置是相同的結果。所以你應該只使用一件事。明智地選擇取決於你的應用程序類型。 –

回答

0

在依賴注入春天至少需要在類合同(Java接口),你可以在運行時動態切換的實現與XML或基於Java註解。即使它是通過XML完成的,我們也需要爲接口提供構造函數,以便自動連接bean也需要該接口類變量。

但正如你說,把基於Java註解,我們需要有訪問源代碼,這是一種帶有註釋的主要缺點。這也適用於AOP。要使課程成爲一個方面,您需要有源代碼訪問權限。