我希望基于数据库值启用我的新功能。如果为该功能设置了数据库值,则应启用新代码。否则,它应该切换并流向旧代码。在Java/Spring中有没有办法做到这一点?我不想频繁地访问数据库,我在考虑请求开始时的一个调用。有没有这样的例子?如果是这样,请让我知道。谢谢
发布于 2019-02-27 03:24:03
创建要素类实现:
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);
}
}现在您可以像这样使用check if feature enabled:
if(CustomFeatures.MY_CUSTOM_FEATURE.isActive()) {
}或者使用Spring方面..
https://stackoverflow.com/questions/54890534
复制相似问题