首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库驱动要素切换

数据库驱动要素切换
EN

Stack Overflow用户
提问于 2019-02-27 00:56:42
回答 1查看 688关注 0票数 1

我希望基于数据库值启用我的新功能。如果为该功能设置了数据库值,则应启用新代码。否则,它应该切换并流向旧代码。在Java/Spring中有没有办法做到这一点?我不想频繁地访问数据库,我在考虑请求开始时的一个调用。有没有这样的例子?如果是这样,请让我知道。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-27 03:24:03

创建要素类实现:

代码语言:javascript
复制
public enum CustomFeatures implements Feature {
    @Label("Activates customFeature")
    MY_CUSTOM_FEATURE;

    public boolean isActive() {
        return FeatureContext.getFeatureManager().isActive(this);
    }
}

创建功能提供程序:

代码语言:javascript
复制
@Bean
public FeatureProvider featureProvider() {
    return new EnumBasedFeatureProvider(CustomFeatures.class);
}

创建实体和存储库:

代码语言:javascript
复制
@Entity
public class Feature {

    private String name;
    private Boolean active;
    // getters-setters
}

创建@Component,它将查询数据库并设置新的要素状态

代码语言:javascript
复制
@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);
   }


}

现在您可以像这样使用check if feature enabled:

代码语言:javascript
复制
if(CustomFeatures.MY_CUSTOM_FEATURE.isActive()) {
}

或者使用Spring方面..

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54890534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档