使用togglz来基于环境(dev,qa,prod)实现功能标记

时间:2019-07-18 13:17:37

标签: spring togglz

我在我的spring应用程序中实现功能标志,我想使用togglz。我希望这些功能基于环境。例如,某个功能正在使用或测试中,因此我可以在DEV和QA中启用它,但尚未为公众使用,因此已在PROD中将其关闭。

我正在浏览togglz文档及其激活策略,但它们似乎都不是基于环境的。我需要实施自定义策略还是可以创造性地使用现有策略之一?

如果有任何简洁的示例最有用。

1 个答案:

答案 0 :(得分:0)

选项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()
        };
    }
}