внедрение зависимости массива весной? - PullRequest
2 голосов
/ 17 ноября 2009

Есть ли способ использовать внедрение зависимостей для внедрения всех доступных реализаций определенного интерфейса весной?

Это то же самое , что и здесь .NET .

.

Хотя моя цель - использовать для этого @Autowired:

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

Поддерживается ли это, потребует ли это взлома или мне лучше использовать другой компонент, где все реализации IDataCollector регистрируют себя и используют этот компонент средства доступа с автопроводкой вместо внедрения в массив?

Причина, по которой я могу подумать, почему это не может быть реализовано по умолчанию, может заключаться в том, что он также внедрит возможные импровизированные реализации, где это неуместно. Хотя мне все еще интересно, возможно это или нет. :)

Ответы [ 2 ]

4 голосов
/ 17 ноября 2009

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

<util:list id="collectors">
  <value>someone@something.com</value>
  <value>someoneelse@something.com</value>
</util:list>
3 голосов
/ 17 ноября 2009

Ваш пример должен работать нормально, как и List<IDataCollector>. Вы попробовали перед тем, как спросить, и обнаружили, что это не работает?

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

Также возможно предоставить все бобы определенного типа из ApplicationContext, добавив аннотация к полю или методу, который ожидает массив этого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...