这是我的用例:
启动我的应用程序时,将创建N个类型为A的bean。
我想拥有自己的业务逻辑来按1和1依次检查这N个bean:
如果它们都不满足我的条件,我将创建另一个类型为A的bean来弹跳容器。
如果其中任何一个满足我的条件,那就什么都不做。
我不确定是否可以像这样简单地使用Optional:
@Autowired
List<A> beans;
@Bean
public Optional<A> maybeA(){
//check beans and optionally create a A
}
答案 0 :(得分:0)
定义返回类型Optional的bean是非常不寻常的,不是一个好的解决方案。我建议您检查是否可以按照https://iamninad.com/conditional-bean-creation-in-spring-boot/所述实现逻辑,或者如果坚持执行解决方案,则可以创建一个新类:
public class UnMatchedACriteriaImpl implements A {
public void testMethod() throws UnSatisfiedXCriteria {
throw new UnSatisfiedXCriteria();
}
}
并将您的bean定义更改为:
@Bean
public A maybeA(){
//check beans and optionally create a A
}
如果您的标准不匹配,您将返回UnMatchedACriteriaImpl
的{{1}}版本。当您想在应用程序中使用它时,它是清晰且易于管理的。