Создание реализации класса объектов:
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, который будет запрашиватьбаза данных и устанавливает новую функцию sate
@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 ..