Togglz 不选择 Spring- 从 application.yml 启动配置
Togglz don't pick up Spring-Boot configuration from application.yml
我尝试遵循 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)?我做错了什么?
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 支持的所有问题:
我尝试遵循 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)?我做错了什么?
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 支持的所有问题: