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-серверу.