java - 数据库驱动功能切换

标签 java spring featuretoggle

我想根据数据库值启用我的新功能。如果为该功能设置了数据库值,则应启用新代码。否则它应该切换并流向旧代码。有没有办法在 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方面..

关于java - 数据库驱动功能切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890534/

相关文章:

ruby - Sinatra API 功能切换

java - Spring 组件的功能切换

java - Infinispan的configuration.xml在哪里找到

javascript - 为什么我无法读取在 POST 中收到的参数?

java - StackOverflow 错误设置多对多关系 Spring JPA

java - 功能修改数据库时是否可以使用功能标志/切换?

java - 如何在 HashMap 中添加多个具有相同键的相同类型的对象

java - DAO设计和数据结构

java - 为什么会出现这个异常请帮助我

java - JPA 从非实体类继承属性