Feature Flags
Подключение
Maven
<dependency>
<groupId>ru.romanow</groupId>
<artifactId>feature-flags</artifactId>
<version>${feature-flags.version}</version>
</dependency>
Gradle
testImplementation "ru.romanow:feature-flags:$featureFlagsVersion"
Реализация
Классы, которые необходимо перезагружать при обновлении флагов:
- Класс
Features(@ConfigurationProperties(prefix = "features")) и beans, куда он autowired. - Beans, помеченные аннотациями
@ConditionOnFeatureEnabled,ConditionOnFeatureDisabledи@DefaultFeatureImplementation. - Классы, где есть
@Value("${features.*}).
Способы получения обновленного конфига:
- Файл на host-машине:
- classpath (by default) – не контролируется;
/opt/features.yml(контролируется переменнойfeatures.config.location).
- Запросом к config-серверу.