I'm using annotations-based wiring (ie @Configurable(autowire=Autowire.BY_TYPE)
) for a given class, and I'd like to wire all beans of a given type into it as a list:
application context:
<beans>
<bean class="com.my.class.FirstConfigurer"/>
<bean class="com.my.class.SecondConfigurer"/>
</beans>
class to autowire into:
@Configurable(autowire=Autowire.BY_TYPE) public class Target {
...
public void setConfigurers(List<Configurer> configurers) { ... }
}
All dependencies implement a common interface called Configurer
Is there a way to make this work to have all dependencies of a type wired together in a collection and injected where necessary, or should I define a <list>
in XML or something?
Yes,
@Inject
private List<Configurer> configurers;
works, and you get a list of all beans implementing the interface. (multiple variations - @Inject
or @Autowired
, field, setter or constructor injection - all work)