2009-11-17 4 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

+2

Там много М к F'ing R :) – skaffman

+0

@skaffman Извините, пришлось громко рассмеяться, потому что это правда. –

4

вы можете придать список и весна будет преобразовать это для вас:

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

- это список, указанный в конфигурации весны xml, которая вводится или как я могу это понять? – subes

+1

Nope - Spring добавила некоторую конфигурацию помощника в utilpsce util, см. Здесь http://static.springsource.org/spring/docs/2.5.6/reference/xsd-config.html –

Смежные вопросы