代码之家  ›  专栏  ›  技术社区  ›  anuni

基于定制业务逻辑条件创建bean

  •  0
  • anuni  · 技术社区  · 8 年前

    以下是我的用例:

    当我的应用程序启动时,将创建N个类型为A的bean。

    我希望有自己的业务逻辑来逐个检查这些N个bean,并且:

    • 如果它们都不满足我的条件,我将创建另一个类型为A的bean到spring容器。

    • 如果其中任何一个符合我的标准,就什么也不做。

    @Autowired
    List<A> beans;
    
    @Bean
    public Optional<A> maybeA(){
      //check beans and optionally create a A
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   MohammadReza Alagheband    8 年前

    定义返回可选类型的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 A . 当您希望在应用程序中使用它时,它是清晰且可管理的。