Как собрать и внедрить все bean-компоненты заданного типа в конфигурацию Spring XML

Одним из самых сильных акцентов весеннего каркаса являетсяВнедрение зависимости концепция. Я понимаю, что один из советов заключается в том, чтобы отделить общий механизм высокого уровня от деталей низкого уровня (как было объявленоПринцип обращения зависимостей).

Технически, это сводится к тому, чтобы иметь реализацию бина, чтобы знать как можно меньше о бине, вводимом как зависимость, например,

public class PrintOutBean {
    private LogicBean logicBean;
    public void action() {
        System.out.println(logicBean.humanReadableDetails());
    }
    //...
}

<bean class="PrintOutBean">
    <property name="loginBean" ref="ShoppingCartBean"/>
</bean>

Но что, если я хотел бы иметь механизм высокого уровня, работающий на нескольких зависимых бинах?

  public class MenuManagementBean {
       private Collection<Option> options;
       public void printOut() {
            for (Option option:options) {
              // do something for option
            }
            //...
       }
  }

Я знаю, что одним из решений будет использование@Autowired аннотация в синглтоне, то есть ...

  @Autowired
  private Collection<Option> options;

Но не нарушает ли это принцип разделения? Почему я должен указать, какие иждивенцы брать в том же месте, где я их использую (т.е.MenuManagementBean класс в моем примере)? Есть ли способ внедрить коллекции bean-компонентов в конфигурацию XML, как это (без каких-либо аннотаций вMMB учебный класс)?

<bean class="MenuManagementBean">
    <property name="options">
       <xxx:autowire by-type="MyOptionImpl"/>
    </property>
 </bean>

Ответы на вопрос(3)

Ваш ответ на вопрос