2009-11-17 78 views
2

有沒有辦法在春季使用依賴注入來注入特定接口的所有可用實現?春季數組依賴注入?

這是一樣的東西as asked here for .NET

雖然我的目標是利用@Autowired此:

public class Foo{ 
    @Autowired 
    private IDataCollector[] collectors; 
} 

這是支持,將這一要求黑客或我最好使用其中IDataCollector的所有實現註冊themselve和使用訪問組件與另一個組件自動裝配而不是數組注入?

我可以想到爲什麼這可能不會被默認實現的一個原因可能是,它也會在不適當的地方注入可能的模擬實現。儘管我仍然對此感興趣,但這可能與否。 :)

回答

3

你的例子應該工作正常,應該List<IDataCollector>。在問之前你有沒有試過,發現它不起作用?

http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-autowired-annotation

另外,也可以通過添加 註釋到字段或方法 期望類型的數組,以提供所有 豆從 ApplicationContext的特定類型的。

+0

謝謝你,我剛開始我在春天的興趣,我真的應該RTFM) – subes 2009-11-18 15:40:10

+2

有很多併購對F'ing R :) – skaffman 2009-11-18 15:56:48

+0

@skaffman對不起,不得不大笑,因爲這是真的。 – 2014-08-13 18:54:25

4

你可以注入一個List和Spring將其轉換爲你好:

<util:list id="collectors"> 
    <value>[email protected]</value> 
    <value>[email protected]</value> 
</util:list> 
+0

這是一個在注入spring xml配置中指定的列表,或者我怎麼理解這個? – subes 2009-11-18 15:42:58

+1

Nope - Spring在utilsapsapce中添加了一些輔助配置,請參閱http://static.springsource.org/spring/docs/2.5.6/reference/xsd-config.html – 2009-11-18 19:08:59