La façon de recueillir et de les injecter tous les haricots d'un type donné au Printemps de configuration XML

L'un des plus forts accents du framework Spring est le L'Injection De Dépendance concept. Je comprends un des conseils derrière qui consiste à séparer générale de haut niveau du mécanisme de détails de bas niveau (comme annoncé par Inversion De Dépendance Principe).

Techniquement, cela revient à avoir un bean mise en œuvre pour en savoir le moins possible sur le haricot étant injecté en tant que dépendance, par exemple

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

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

Mais que si je voulais avoir un mécanisme de haut-niveau de l'exploitation sur plusieurs dépendante des haricots?

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

Je connais une solution serait d'utiliser @Autowired annotation dans le singleton bean, qui est...

  @Autowired
  private Collection<Option> options;

Mais n'est-ce pas violer le principe de séparation? Pourquoi dois-je préciser que les personnes à charge à prendre à la même place, je les utiliser (c'est à dire MenuManagementBean classe dans mon exemple)?
Est-il un moyen pour injecter des collections de fèves dans la configuration XML comme ceci (sans annotation, dans le MMB classe)?

<bean class="MenuManagementBean">
    <property name="options">
       <xxx:autowire by-type="MyOptionImpl"/>
    </property>
 </bean>
  • Je ne pense pas que l'ajout de @Autocâblés sur le terrain permettront de créer la collection d'options pour vous - vous aurez toujours besoin de déclarer un bean dans votre contexte, qui dresse la liste des options. Et puis on pourrait tout aussi bien tomber l' @Autocâblés et de mettre un <ref bean="xxx"> dans votre MMB définition du contexte.
  • Je suis assez sûr que l'ajout de @Autowired à une collection de propriété permet de rassembler tous les haricots de collecte type d'élément. C'est la façon dont nous l'utilisons tout le temps. Spring 2.5 doc sur ça: static.springsource.org/spring/docs/2.5.x/reference/...
  • Ok, super, fonctionnalité intéressante! Je n'ai vérifier les docs, mais je ne l'avais pas vu quand j'ai regardé. Désolé pour la confusion.
  • Je l'ai signalé une demande de fonctionnalité pour le framework Spring pour couvrir: jira.springframework.org/browse/SPR-7183
  • Oledzki Pas exactement lié à la question, mais ne le Autocâblés de travail lors de l'utilisation de Java Configuration, au lieu de fichiers XML? Il semble qu'il ne fonctionne pas de la même manière. Je pense que la Ressource n'est que lors de l'utilisation de Java configuration, pas Autocâblés.