代码之家  ›  专栏  ›  技术社区  ›  Mr.H.

从内部spring条件查询数据库

  •  0
  • Mr.H.  · 技术社区  · 6 年前

    我有两个服务,它们都实现相同的接口。 我试图使用springs@conditional注释来决定根据配置来初始化哪一个。由于我必须处理遗留软件,所以配置存储在数据库中,必须保留在那里。所以我必须在我的条件内进行查询。我想使用springdata,但是当我将存储库自动连接到 org.springframework.context.annotation.Condition 它是空的。我甚至试图用 ConditionContext 喜欢 context.getBeanFactory().getBean(SystemSettingRepository.class) 但这产生了一个例外。 你能想出从条件内部查询数据库的方法吗? 这是我的代码:

    public class UseCMISCondition implements Condition {
        @Autowired
        private SystemSettingRepository settingsRepo;
    
        @Override
        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
            return settingsRepo.useCMIS();
        }
    }
    

    谢谢你的帮助。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Dirk Deyne    6 年前

    也许您更喜欢根据查询结果提供servicebean的配置?

    @Configuration
    public class ServiceProvider {
      @Autowired  private SystemSettingRepository settingsRepo;
    
      @Bean
      public MyInterface myIneterface(){
          boolean cmis = settingsRepo.useCMIS() ;
          if(cmis){
            return xMyService();
          } else {
            return yMyService();
          }
      }
    
      private XMyService xMyService(){
          return new XMyService();
      }
    
      private YMyService yMyService(){
          return new YMyService();
      }
    
    }