1

春の春のセキュリティ oAuth2 クライアントを使用しています。そして、次のようなデフォルトの OAuth2RestTemplate 宣言があります

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

私が必要とするのは、カスタムエラー処理を提供することです。そのため、次のようなコンテキストに入れようとしています

@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いることです。そのため、それをどのようにオーバーライドできるのでしょうか?

4

1 に答える 1

1

デフォルトの実装をオーバーライドする代わりに、デフォルトのインスタンスを取得して、必要なすべてのプロパティを設定することができます。以下の例を参照してください。

@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
            }
        });
    }
}
于 2016-03-30T13:45:55.690 に答える