Управление базой данных - PullRequest
       21

Управление базой данных

0 голосов
/ 26 февраля 2019

Я хотел бы включить мою новую функцию на основе значения базы данных.Если для функции установлено значение базы данных, новый код должен быть включен.В противном случае он должен переключаться и переходить к старому коду.Есть ли способ сделать это в Java / Spring?Я не хочу часто обращаться к базе данных. Я думаю об одном вызове в начале запроса.Есть ли примеры для этого?Если это так, пожалуйста, дайте мне знать.Спасибо

1 Ответ

0 голосов
/ 26 февраля 2019

Создание реализации класса объектов:

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 ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...