2008-11-10 37 views
0

我想讓一段運行時狀態決定使用哪個接口的哪個實現,最好是僅通過自動裝配。Spring @Autowiring,如何使用對象工廠來選擇實現?

我曾嘗試製造物體的工廠接口泰德使用動態代理服務器,以及我用限定符脅迫的@Autowired注射使用工廠。限定符是必需的,因爲工廠和實現都響應相同的接口。

這個問題是我最終用@Qualifier註釋每個@Autowired引用。我真正想做的是用類似@NotCandidateForAutowiringByInterface(我的幻想註釋)的方式註釋非工廠實現,或者甚至更好地使Spring在注入非合格域時更喜歡單個未合格的bean

我可能會在這裏錯誤地思考,因此歡迎提供備選建議。 任何人都知道如何做到這一點?

回答

1

你可以使用@Resource並指定工廠的bean的名稱。

1

我沒有看過這個自己,但我注意到Spring JavaConfig是去到M4,它似乎允許通過註釋和Java代碼的組合更靈活的配置。我想知道它是否會爲您的問題提供解決方案。

+0

Spring javaconfig解決了這個問題。但是,一旦你獲得完全註釋的配置的味道,javaconfig的整個概念似乎過度設計。對於javaconfig爲+1 – krosenvold 2008-11-14 17:14:57