2015-11-11 94 views
0

我有一些問題,用@Bean註釋的方法設置一個bean。春天的版本是4.1.4。@Bean方法與參數

時引發的錯誤是:

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 

起初我以爲這只是在我的代碼,但後來我刪除了,並開始出現在春季管理豆類如AuthenticationConfiguration。

我在其他項目中使用相同的工具,因此我相信這種配置有問題。

我發現一個問題,指向春季版本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

好吧,事實證明spring-oauth2從4.0.8版本的彈簧中拉出了一些模塊。我修復了這些問題並手動強制當前版本,現在一切似乎都奏效了。