我正在我的 spring 应用程序中实现功能标志,我想使用 togglz。我希望这些功能基于环境。例如,一个功能正在开发或测试中,所以我可以在 DEV 和 QA 中启用它,但它还没有为公众准备好,所以它在 PROD 中被关闭了。
我正在查看 togglz 文档及其激活策略,但它们似乎都不是基于环境的。我需要实施自定义策略还是可以创造性地使用现有策略之一?
如果有任何简洁的例子最有帮助。
选项1
togglz-spring-core 提供的配置文件有一个现有的激活策略:SpringProfileActivationStrategy
选项 2
如果您想创建自己的,可以轻松实现:
@Configuration
public class ProfileStrategy implements ActivationStrategy {
private static final String PROFILE_PARAM = "profile";
private final Environment environment;
public ProfileStrategy(Environment environment) {
this.environment = environment;
}
@Override
public String getId() {
return "profile";
}
@Override
public String getName() {
return "Profile strategy";
}
@Override
public boolean isActive(FeatureState featureState, FeatureUser featureUser) {
String profile = featureState.getParameter(PROFILE_PARAM);
return profile != null && Arrays.asList(environment.getActiveProfiles()).contains(profile);
}
@Override
public Parameter[] getParameters() {
return new Parameter[] {
ParameterBuilder.create(PROFILE_PARAM)
.label("Profil")
.description("Profile to activate feature")
.largeText()
};
}
}