我正在尝试使用Togglz库,它允许您包装应用程序逻辑,并能够使用一些高级策略打开或关闭应用程序逻辑。我正在阅读Spring文档,虽然它非常简洁,但我发现它缺少了一些信息,无法正确地测试这些信息。
参考: https://www.togglz.org/documentation/spring-boot-starter.html
<dependency>
<groupId>org.togglz</groupId>
<artifactId>togglz-spring-boot-starter</artifactId>
<version>2.6.1.Final</version>
</dependency>文档然后声明您可以在@RestController,上使用自动配置类,比如。
@Controller
public class MyClass {
private FeatureManager manager;
public MyClass(FeatureManager manager) {
this.manager = manager;
}
@RequestMapping("/")
public ResponseEntity<?> index() {
if (manager.isActive(HELLO_WORLD)) {
...
}
}
}这里已经有一些我没有看到解释过的问题,首先是传递一个枚举"HELLO_WORLD“作为isActive()函数在FeatureManager上的一个参数。我看不出他们是如何将这些注入到方法/类中的。它们确实展示了如何在yaml中声明特性ENUM,但这并不是指传递给前面提到的isActive()方法的“isActive”,即:
togglz:
features:
FOO:
enabled: true
BAR:
enabled: false在进一步的文档中,他们最终引用了这个HELLO_WORLD枚举,但是我尝试将它添加到我的application.yaml中,我似乎无法弄清楚它们是如何将这些特性enum注入到这些方法中的:
togglz:
enabled: true # Enable Togglz for the application.
features: # The feature states. Only needed if feature states are stored in application properties.
HELLO_WORLD:
enabled: true文档确实解释了如何为这些特性创建enum类,,但是他们明确地列出了它作为在yaml文件中定义它的替代方法。
public enum MyFeatures implements Feature {
@EnabledByDefault
@Label("First Feature")
FEATURE_ONE,
@Label("Second Feature")
FEATURE_TWO;
}
@Bean
public FeatureProvider featureProvider() {
return new EnumBasedFeatureProvider(MyFeatures.class);
}我也尝试过这样做,当我尝试运行应用程序时,我只得到了更多的Bean异常错误,即
Description:
Parameter 2 of method featureManager in org.togglz.spring.boot.autoconfigure.TogglzAutoConfiguration$FeatureManagerConfiguration required a bean of type 'org.togglz.core.user.UserProvider' that could not be found.
Action:
Consider defining a bean of type 'org.togglz.core.user.UserProvider' in your configuration.,任何成功使用过这个库的人都能提供输入,如何设置一个简单的特性,toggl_e?最终,我希望能够在应用程序使用发布日期 _activation策略(即2021-06-30 00:00:00 )时打开/关闭该功能,这样我就可以根据日期时间激活切换。
参考资料:https://www.togglz.org/documentation/activation-strategies.html
在yaml中能做到这一点吗?
发布于 2021-11-30 15:09:12
如果您不想使用Enum,则必须注入自动配置的FeatureProvider并调用featureProvider.getFeatures()来获取所有可用的功能。然后,您可以使用FeatureManager检查它们的状态。我同意这一点在文件中并不明显。
也可以通过application.yml配置激活策略。请参阅https://www.togglz.org/documentation/spring-boot-starter.html末尾的示例部分“应用程序属性”。它应该是这样的:
togglz.features.FOO:
enabled: true
strategy: release-date
param:
date: ..
time: ..发布于 2021-11-30 13:18:22
我成功地实现了库,仅更改了上述代码中所需的内容,或者对于所需的例外情况,无法找到的org.togglz.core.user.UserProvider类型的bean是多添加一个bean UserProvider。
@Bean
public UserProvider getUserProvider() {
return new ServletUserProvider("admin");
}https://stackoverflow.com/questions/67943376
复制相似问题