Var args Autowire

时间:2017-09-08 16:38:38

标签: java spring constructor-injection

我想自动连接作为构造函数的var args aruments的bean。

我可以这样做,如果是,我该如何实现?

以下是我尝试的代码:

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 个答案:

答案 0 :(得分:0)

是的,使用注释可以将@Autowired添加到构造函数中,IoC容器将连接在上下文中注册的所有Rules实例:

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

}