可变参数自动装配

Var args Autowire

我想自动连接 bean,它们是我的构造函数的 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

是的,通过注解,您可以将@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);
    } 
  }

}