Togglz不要从application.yml中获取Spring-Boot配置

时间:2018-06-23 05:21:01

标签: spring-boot yaml spring-boot-starter togglz

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

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)?我怎么了?

1 个答案:

答案 0 :(得分: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