Java 如果春季没有bean,有没有一种简单的方法可以自动连接空集合?
如果我有Java 如果春季没有bean,有没有一种简单的方法可以自动连接空集合?,java,spring,Java,Spring,如果我有@自动连线列表bean和没有SomeBeanClass的bean,我得到: 未找到依赖项[SomeBeanClass集合]类型为[SomeBeanClass]的匹配bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)} 如果我添加(required=false),我会得到bean的null。但它看起来像是需要空检查的
@自动连线列表bean代码>和没有SomeBeanClass
的bean,我得到:
未找到依赖项[SomeBeanClass集合]类型为[SomeBeanClass]的匹配bean:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
如果我添加(required=false)
,我会得到bean的null
。但它看起来像是需要空检查的容易出错的解决方案
如果没有bean,是否有一种简单的方法(一行)自动连接空集合?
如果我添加(required=false)
,我会得到bean的null
字段是显式设置为null还是根本没有设置?尝试添加初始值设定项表达式
@Autowired(required=false)List bean=new ArrayList();
Spring 4和Java 8有几个选项:
@Autowired(required=false)
private List<Foo> providers = new ArrayList<>();
您还应该能够使用可选opFoo自动关联a字段代码>,但我还没有使用它。这不起作用。Spring仍然会抱怨它做不到自己的事情。除非你把required=false
@SotiriosDelimanolis放在我所指的情况下,对不起,我没有说得很清楚。最好是分配集合。空的\u列表
(或者不可变列表。of()
,如果你使用番石榴)。我如何使用构造函数注入来做到这一点?
@Autowired
public MyClass(Optional<List<Foo>> opFoo) {
this.foo = opFoo.orElseGet(ArrayList::new);
}