Var Args Autowire
Я хочу автоматически подключить бины, которые являются аргументами var args для моего конструктора.
Могу ли я сделать это, если да, как я могу достичь?
Вот код, который я пытаюсь:
Public class ServiceImpl implements Service{
private Set<Rules> rules = new HashSet<Rules>();
public ServiceImpl(Rules... args) {
for (Rules r : args) {
rules.add(r);
}
}
//...
}
Я пытаюсь ввести в spring-config.xml
как ниже:
<bean id = "check" class="ServiceImpl">
<constructor-arg ref="notEmpty"></constructor-arg>
<constructor-arg ref="check"></constructor-arg>
</bean>
Есть ли способ, которым я могу добиться этого с аннотациями и без прохождения constructor args
Вот.
1 ответ
Решение
Да, с аннотациями вы можете добавить @Autowired в конструктор, и контейнер IoC подключится ко всем экземплярам правил, которые зарегистрированы в контексте:
@Component
public class ServiceImpl implements Service{
private Set<Rules> rules = new HashSet<Rules>();
@Autowired
public ServiceImpl(Rules... args) {
for (Rules r : args) {
rules.add(r);
}
}
}