使用 togglz 实现基于环境(dev、qa、prod)的功能标志



我正在我的 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()
        };
    }
}

最新更新