【问题标题】:Using togglz to implement feature flags based on environment (dev, qa, prod)使用 togglz 实现基于环境(dev、qa、prod)的特性标志
【发布时间】:2019-07-18 13:17:37
【问题描述】:

我正在我的 Spring 应用程序中实现功能标志,我想使用 togglz。我希望这些功能基于环境。例如,一个功能正在开发或测试中,所以我可以在 DEV 和 QA 中启用它,但它还没有为公众准备好,所以它在 PROD 中被关闭了。

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

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

【问题讨论】:

    标签: spring togglz


    【解决方案1】:

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

    【讨论】:

    • 有人有使用 SpringProfileActivationStrategy 的简单示例吗?
    • 查看文档:togglz.org/documentation/spring-boot-starter.html 我会说这取决于您如何激活您的功能(属性、数据库、枚举)。
    • 我也有同样的问题,如果有解决办法请告诉我们..
    猜你喜欢
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多