2016-03-30 15 views
0

私はspring spring security oAuth2クライアントを使用しています。 そして、私は必要なものSpringコンテキストでのデフォルトのOAuth2RestTemplateのオーバーライド

@Bean 
@Primary 
public OAuth2RestTemplate oauth2RestTemplate(OAuth2ClientContext oauth2ClientContext, 
     OAuth2ProtectedResourceDetails details) { 
    OAuth2RestTemplate template = new OAuth2RestTemplate(details, 
      oauth2ClientContext); 
    return template; 
} 

のように見えるデフォルトOAuth2RestTemplate宣言は、ここでの問題は、そのデフォルトの実装である

@Bean 
public OAuth2RestTemplate restTemplate(OAuth2ClientContext oauth2ClientContext,  
     OAuth2ProtectedResourceDetails details) { 
    OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(details, oauth2Context); 

    restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { 
     @Override 
     public void handleError(ClientHttpResponse response) throws IOException { 
      // do some stuff 
     } 
    }); 

    return restTemplate; 
} 

ようなので、私はコンテキストにそれを置くしようとしているカスタムのエラー処理を提供することがあります@Primaryと注釈が付けられています。どのように上書きできるのでしょうか?

答えて

0

デフォルトの実装を上書きするのではなく、デフォルトのインスタンスを取得して、必要なすべてのプロパティを設定するだけです。以下の例を参照してください。

@Configuration 
public class OverridenConfiguration { 
    @Autowire 
    private OAuth2RestTemplate restTemplate; 

    @PostConstruct 
    public void customSettings() { 
     System.out.println("************** custom settings ***********"); 
     restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { 
      @Override 
      public void handleError(ClientHttpResponse response) throws IOException { 
       // do some stuff 
      } 
     }); 
    } 
} 
関連する問題