我尝试将togglz集成到我的Spring Boot应用程序中,但看起来好像Auto Configuration难以提供FeatureManager。以下是我的堆栈跟踪:
2017-02-23 16:04:30.033 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No cached FeatureManager for class loader: org.springframework.boot.devtools.restart.classloader.RestartClassLoader@6b8005f1
2017-02-23 16:05:57.403 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : Found 5 FeatureManagerProvider implementations...
2017-02-23 16:06:27.652 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No FeatureManager provided by org.togglz.core.context.ThreadLocalFeatureManagerProvider
2017-02-23 16:06:36.436 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No FeatureManager provided by org.togglz.core.context.BeanFinderFeatureManagerProvider
2017-02-23 16:06:45.980 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No FeatureManager provided by org.togglz.core.context.StaticFeatureManagerProvider
2017-02-23 16:06:51.164 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No FeatureManager provided by org.togglz.core.context.ContextClassLoaderFeatureManagerProvider
2017-02-23 16:06:55.980 DEBUG [myService,,,] 23359 --- [ restartedMain] o.t.c.c.JNDIFeatureManagerProvider : FeatureMananger not found: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
2017-02-23 16:06:57.990 DEBUG [myService,,,] 23359 --- [ restartedMain] org.togglz.core.context.FeatureContext : No FeatureManager provided by org.togglz.core.context.JNDIFeatureManagerProvider
应用最终死于IllegalStateException:
Caused by: java.lang.IllegalStateException: Could not find the FeatureManager. For web applications please verify that the TogglzFilter starts up correctly. In other deployment scenarios you will typically have to implement a FeatureManagerProvider as described in the 'Advanced Configuration' chapter of the documentation.
at org.togglz.core.context.FeatureContext.getFeatureManager(FeatureContext.java:53) ~[togglz-core-2.3.0.Final.jar:na]
我的app属性中定义了togglz.enabled
和togglz.feature-enums
属性,以及我创建的TogglzConfig的Configuration类,它似乎是Spring Boot在幕后使用togglz做的事情不太正常。有没有其他人遇到这个或知道如何解决?
答案 0 :(得分:1)
首先,我建议您更新您的帖子以包含:
请注意,如果您使用的是弹簧靴,则应使用以下GAV:
<dependency>
<groupId>org.togglz</groupId>
<artifactId>togglz-spring-boot-starter</artifactId>
<version>2.4.1.Final</version>
</dependency>
<dependency>
<groupId>org.togglz</groupId>
<artifactId>togglz-console</artifactId>
<version>2.4.1.Final</version>
</dependency>
然后它应该像定义返回的bean一样简单:
这个的简单实现是:
@Bean
public StateRepository getStateRepository() {
return new InMemoryStateRepository()
}
@Bean
public FeatureProvider featureProvider() {
return new EnumBasedFeatureProvider(MyFeatures.class);
}
@Bean
public UserProvider getUserProvider() {
return new NoOpUserProvider();
}
其中MyFeatures.class是实现Feature
的枚举可能对您设置春季启动有益的其他属性包括:
togglz.console.enabled=true
togglz.console.secured=false