我正在尝试使用Togglz库,它允许您包装应用程序逻辑并能够使用一些高级策略将其切换为 ON 或 OFF。我正在阅读它的 Spring Boot 文档,虽然它非常简洁,但我发现它缺少一些不允许我正确测试的信息。
参考: https ://www.togglz.org/documentation/spring-boot-starter.html
- 我正在运行一个Spring Boot 2.4.5版本的项目,这个文档说要导入依赖项,我这样做了:
<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() 方法的“HELLO_WORLD”,即:
togglz:
features:
FOO:
enabled: true
BAR:
enabled: false
在文档的下方,他们最终确实引用了这个HELLO_WORLD
枚举,但我尝试将它添加到我的 application.yaml 中,但我似乎无法弄清楚他们如何将这些功能枚举注入这些方法中:
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
该文档确实解释了如何为这些功能创建一个枚举类,但他们明确将其列为在 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.
成功使用此库的任何人都可以提供输入如何设置简单的功能切换吗?最终,我希望能够在应用程序使用RELEASE DATE 激活策略时打开/关闭此功能,即2021-06-30 00:00:00
我可以根据日期时间激活切换。
参考:https ://www.togglz.org/documentation/activation-strategies.html
这可以在yaml中完成吗?