Как можно использовать функцию переключения при создании bean-компонента конфигурации приложения с помощью автоконфигурации Togglz Spring?
Пример использования функции переключателя для создания компонента в конфигурации приложения:
@RefreshScope
@Configuration
@Order(1)
class AppConfig {
@Bean
@Autowired
public FeatureProvider featureProvider() {
return new EnumBasedFeatureProvider(FeatureToggle.class);
}
@Bean
@Autowired
ProjectAccess getProjectAccess(DataSource dataSource, HazelcastLocator hazelcastLocator) {
if(FeatureToggle.MY_TOGGLE_NAME.isActive()) {
return new MyTestClass();
}
else {
return new YourTestClass();
}
}
}
1 ответ
Вы не должны делать это таким образом.;-)
Проблема с этим кодом состоит в том, что вы в основном читаете переключатель один раз во время запуска, а затем уже не можете его изменить. Это не то, как обычно используется Togglz.
Вместо этого вы должны разработать свое приложение так, чтобы можно было переключать переключатель во время выполнения. Togglz предоставляет FeatureProxyFactoryBean, который был разработан именно для этого случая.
Вы также можете создать это вручную, создав общий интерфейс для обеих реализаций, а затем создать реализацию, которая в основном проверяет переключение при каждом вызове метода, а затем делегирует правильный экземпляр.