有没有一种简单的方法可以在春季没有豆子的情况下自动连接空收集?

2022-09-01 05:04:50

如果我有并且没有豆子,我得到:@Autowired List<SomeBeanClass> beans;SomeBeanClass

没有找到[SomeBeanClass]类型的匹配bean用于依赖关系[SomeBeanClass的集合]:预计至少有1个bean有资格作为此依赖项的自动连接候选。Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

如果我添加 ,我会得到 .但它看起来像是容易出错的解决方案,需要空检查。(required=false)nullbeans

有没有一种简单的方法(一个衬里)在没有豆子的情况下自动连接空收集?


答案 1

Spring 4 和 Java 8 有几个选项:

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

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

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

您还应该能够使用 自动连接字段,但我还没有使用它。Optional<List<Foo>> opFoo;


答案 2

如果我添加 ,我会得到 .(required=false)nullbeans

该字段是显式设置为 null 还是根本不设置?尝试添加初始值设定项表达式

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

推荐