如果Spring中没有bean,是否有一种简单的方法可以自动assembly空集合?

如果我有@Autowired List beans; 并且没有SomeBeanClass bean,我得到:

没有匹配[SomeBeanClass]类型的匹配bean用于依赖[SomeBeanClass的集合]:期望至少有一个bean有资格作为此依赖项的autowire候选者。 依赖注释:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

如果我添加(required=false) ,我会为beans获取null 。 但它看起来像容易出错的解决方案需要空检查。

如果没有豆子存在,是否有一种简单的方法(一个class轮)自动assembly空集合?

如果我添加(required=false) ,我会为beans获取null

该字段是否显式设置为null或者根本没有设置它? 尝试添加初始化表达式

 @Autowired List beans = new ArrayList<>(); 

Spring 4和Java 8有几个选项:

 @Autowired(required=false) private List providers = new ArrayList<>(); 

您还可以将java.util.Optional与构造函数一起使用:

 @Autowired public MyClass(Optional> opFoo) { this.foo = opFoo.orElseGet(ArrayList::new); } 

您还应该能够使用Optional> opFoo;自动assembly一个字段Optional> opFoo; ,但我还没用过。