0

我尝试遵循Spring Boot 的 Togglz 指南,因此添加了所有必要的依赖项,创建了一个功能枚举:

public enum RetrospectiveBoardFeatures implements Feature {

    @Label("Name by cookie")
    NAME_BY_COOKIE,

    @Label("Name by login")
    NAME_BY_LOGIN;

    public boolean isActive() {
        return FeatureContext.getFeatureManager().isActive(this);
    }
}

,配置了一个 EnumBasedFeatureProvider 以使 Spring/Togglz 知道该枚举:

@SpringBootApplication
public class Application {

    public static void main(final String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public FeatureProvider featureProvider() {
        return new EnumBasedFeatureProvider(RetrospectiveBoardFeatures.class);
    }
}

这一切都很好,直到我编写了一个小单元测试来查看功能切换配置是否应用于我的枚举(来自 application.yml):

togglz:
  features:
    NAME_BY_COOKIE:
      enabled: true
    NAME_BY_LOGIN:
      enabled: false

测试:

@RunWith(SpringRunner.class)
@ContextConfiguration(classes = Application.class)
public class RetrospetiveBoardFeaturesTest {
    @Test
    public void testCookieFeature() {
        assertThat(RetrospetiveBoardFeatures.NAME_BY_COOKIE.isActive(), is(true));
    }
}

所以没有达到我的预期结果(功能激活)。然后我添加了默认启用的注释,我的功能被激活了。根据指南(我是如何理解的),我不需要添加任何从 Spring 读取我的配置并让 Togglz 知道它们的内容。GitHub 上的 Togglz 示例在这方面也没有做任何事情(通过查看 Togglz 在 Spring-Boot 启动器中提供的内容,已经设置了一个特性属性提供程序)。也许我选择了一些错误的版本(Spring boot 2.0.1.RELEASE 和 Togglz 2.5.0.Final)?我做错了什么?

4

1 回答 1

0

Togglz 2.5.0.Final 还不支持 Spring Boot 2。我想这可能是你问题的根源。我们即将在接下来的几天发布 2.6.0.Final 并提供完整的 Spring Boot 2 支持。

当然,您可以尝试最新的快照。在此处查看所有详细信息:

https://www.togglz.org/download.html

此外,请随时加入我们的 Gitter 聊天,我们目前讨论有关 Spring Boot 2 支持的所有问题:

https://gitter.im/togglz/togglz

于 2018-06-23T05:53:52.760 回答