ho creato un fagiolo molla che contiene un elenco di altri fagioli, in questo modo:Primavera XML fagioli interna domanda
<bean name="InventoryManager" class="InvManager">
<property name="slots">
<bean class="HeadSlot" />
<bean class="ShoulderSlot" />
<!-- ... -->
</property>
</bean>
Il problema, però, è che altrove ho usato un @Autowired
un'annotazione in un'altra classe di afferrare un elenco di tutti i fagioli di attuazione di una certa interfaccia che alcuni di questi fagioli interiori implementare, in questo modo:
@Autowired
public void registerInventoryHandlers(List<InvSlot> slots) {
//... do some setup stuff with beans that implement the InvSlot interface.
}
il problema qui è che a quanto pare i "fagioli interiori" definiti in XML non fanno parte della lista @Autowired
. Tuttavia, dare tutti questi nomi di slot e quindi farvi riferimento dall'XML sembra non necessario e brutto.
C'è un modo per definire un bean all'interno di un altro bean, ma non essere un bean "interno"? O c'è un modo migliore per gestire questo progetto?
Ah, al contrario! @Autowired ha alcuni usi sorprendenti e meno conosciuti. Per citare la documentazione di Spring: "È anche possibile fornire tutti i bean di un particolare tipo da ApplicationContext aggiungendo l'annotazione a un campo o un metodo che si aspetta un array di quel tipo" –
Inferno insanguinato, così fa. Ti ringrazio, mi hai insegnato una cosa nuova :) – skaffman
Ho provato ad usarlo per alimentare una sorta di coda "non c'è bisogno di registrarti" e mi sono creduto maledettamente intelligente. Ma poi mi sono imbattuto in questa particolare lattina di vermi. –