我想通过构造函数注入(inject)将 bean 列表注入(inject)到 spring bean 中。
@Component
public void MyBean {
@Autowired
public MyBean(List<BeanToInject> beanList) {
...
}
}
但是 BeanToInject 的实现在其他模块中。这些模块可能已关闭。如果在 applicationcontext 中没有 BeanToInject 的实现,spring 会在启动时抛出一个异常,而不是注入(inject)一个空列表。我能做什么? (基于 Setter 和私有(private)属性(property)的 Autowiring 不是我的选择。)
最佳答案
在 Spring 中,Autowired 可以有一个 required 值来定义它在 Autowiring 时是否需要。但这不适用于构造函数。在您的情况下,最好的解决方案是在方法或属性中使用 Autowiring 并应用
@Autowired(required=false)
private List<BeanToInject> beanList;
或者
@Autowired(required=false)
public void setBeanList(List<BeanToInject> beanList);
关于java - 构造函数中的 Spring 非必需属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892714/