我试图遵循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);
}
}这一切都很好,直到我编写了一个小单元测试,以查看特性切换配置是否应用于我的enum (来自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 2.0.1.RELEASE和Togglz2.5.0.Final)?我做错什么了?
发布于 2018-06-23 05:53:52
Togglz 2.5.0. Spring还不支持Spring 2。我想这可能是你问题的根源。在接下来的几天里,我们将发布2.6.0,最后提供完整的Spring 2支持。
当然,您可以尝试一下最新的快照。请参阅这里的所有细节:
https://www.togglz.org/download.html
此外,欢迎加入我们的Gitter聊天,我们目前正在讨论与Spring 2支持有关的所有问题:
https://stackoverflow.com/questions/50998194
复制相似问题