我看过一些关于可选bean依赖的文章,通常建议使用java Optional类,或者spring ObjectProvider类。
这些确实有效,但我的情况有点不同。如果在我的上下文中存在多个相同类型的 bean,@Qualifier
并且我不知道其中是否有我需要的 bean 注释,该怎么办。我需要具有特定名称的那个。
@ComponentScan(basePackages = "my.package")
public class MyClass {
private final MyOptionalBean myOptionalBean;
MyClass(ObjectProvider<MyOptionalBean> myOptionalBeanObjectProvider) {
this.myOptionalBean = myOptionalBeanObjectProvider.getIfAvailable(() -> null);
}
}
上面的例子有效。但是现在想象一下,在我的上下文中注册了多个 MyOptionalBean bean,这些 bean 被命名。我如何编写与上面类似的代码,但告诉 spring 按特定实例的名称查找?