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);
    } 
  }

}
Другие вопросы по тегам