spring - 从 Spring Condition 内部查询 DB
问题描述
我有两个服务,它们都实现了相同的接口。我正在尝试使用 Springs @Conditional 注释来决定根据配置初始化哪一个。由于我必须处理遗留软件的事实,配置存储在数据库中并且必须留在那里。所以我必须在我的条件下进行查询。我想为此使用 SpringData,但是当我将存储库自动连接到我的org.springframework.context.annotation.Condition
时,它是空的。我什至尝试使用ConditionContext
类似的方法获取 Repo,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();
}
}
谢谢你的帮助。
解决方案
根据查询结果提供 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();
}
}
推荐阅读
- angular - 由于缺少标头,对 Jira REST API 的预检请求失败
- javascript - 是否可以使用 firebase 添加 google 和 Facebook 身份验证?
- c++ - C++ 字符数组加法
- html - Curl - 从文本文件中加载多个地址
- apache - 如何在 apache 中使用基于表单的 LDAP 身份验证
- javascript - LINQ.JS 中的“任何列表”选择器
- spring-boot - 使用 IntelliJ IDEA 遇到 JPA 多对多关系构建时间错误
- node.js - npm uninstall * 命令是否会在卸载 package.json 的依赖项时也删除全局安装?
- windows - Windows中python文件的FileNotFoundException
- ruby-on-rails - Ruby on Rails 洗劫 gem 搜索