带参数的@Bean方法

时间:2015-11-11 20:47:45

标签: spring spring-security spring-security-oauth2

我在设置带有@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));
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,事实证明spring-oauth2正在从4.0.8版本的弹簧形式中拉出一些模块。我修复了这些并手动强制当前版本,现在一切似乎都有效。