java - 数据库驱动的功能切换
问题描述
我想根据数据库值启用我的新功能。如果为特性设置了数据库值,则应启用新代码。否则它应该切换并流向旧代码。有没有办法在 Java/Spring 中实现这一点?我不想经常访问数据库。我想在请求开始时打一个电话。有这方面的例子吗?如果是这样,请告诉我。谢谢
解决方案
创建要素类实现:
public enum CustomFeatures implements Feature {
@Label("Activates customFeature")
MY_CUSTOM_FEATURE;
public boolean isActive() {
return FeatureContext.getFeatureManager().isActive(this);
}
}
创建功能提供者:
@Bean
public FeatureProvider featureProvider() {
return new EnumBasedFeatureProvider(CustomFeatures.class);
}
创建实体和存储库:
@Entity
public class Feature {
private String name;
private Boolean active;
// getters-setters
}
创建@Component,它将查询数据库并设置新功能状态
@Component
public class FeatureToggler {
private final FeatureRepository featureRepository;
private final FeatureManager featureManager;
private FeatureToggler(FeatureRepository featureRepository, FeatureManager featureManager) {
this.featureRepository = featureRepository;
this.featureManager = featureManager;
}
@Schedule(fixedRate=60000)
public void refreshFeatureToggles() {
featureManager.setFeatureState(new FeatureState(CustomFeatures.MY_CUSTOM_FEATURE, featureRepository.findByName().isActive);
}
}
现在您可以像这样使用检查功能是否启用:
if(CustomFeatures.MY_CUSTOM_FEATURE.isActive()) {
}
或者使用 Spring 方面..
推荐阅读
- javascript - 映射函数只排序一个结果
- php - 如何在 json 响应中发送多个参数?(拉拉维尔)
- javascript - 使用 app.use('url','route_file') 对范围路由进行错误处理
- javascript - 我如何在 JavaScript 中使用 PHP 函数(Gutenberg WordPress)
- algorithm - 任意凸多边形中具有固定纵横比的最大对齐矩形?
- port - 来自互联网的端口转发工作不在同一网络内
- sql - 防止在 AWS Glue 中多次处理文件
- windows - 使用批处理脚本在多个文件上搜索文本,如果在其中找到文本,则重命名文件
- python - Pyinfra 缺少位置参数
- android - 以编程方式为 AnimatedVectorDrawable 和 Compat 设置持续时间和 startOffset