我在设置带有@Bean注释方法的bean时遇到了一些问题。 Spring版本是4.1.4。
引发的错误是:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'authenticationManagerBuilder' defined in class org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration: Can only specify arguments for the getBean method when referring to a prototype bean definition
起初我以为它只是在我的代码中,但后来我删除了它并开始出现在SpringConamiguration等Spring托管bean中。
我在其他项目中使用它并且它正在工作,所以我相信这个配置有问题。
我发现了一个指向spring 4.1.3版本的问题,但它似乎已在下一个版本中得到修复,因此我不知道可能发生的事情。 https://jira.spring.io/browse/SPR-12488
我很久以来一直在使用这种策略,如:
@Bean
public DelegatingTokenGranter delegatingTokenGranter(AuthorizationServerEndpointsConfigurer endpoints) {
return new DelegatingTokenGranter(endpoints);
}
然后在配置中调用类似:
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints
.tokenStore(tokenStore())
.authenticationManager(authenticationManager)
.addInterceptor(oAuth2ThreadContextInterceptor())
.tokenGranter(delegatingTokenGranter(endpoints));
}
有什么想法吗?
答案 0 :(得分:0)
好的,事实证明spring-oauth2正在从4.0.8版本的弹簧形式中拉出一些模块。我修复了这些并手动强制当前版本,现在一切似乎都有效。