覆盖Spring上下文中的默认OAuth2RestTemplate

时间:2016-03-30 13:06:51

标签: java spring spring-boot spring-security-oauth2 oauth2

我正在使用spring spring security 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,所以我想知道如何覆盖它?

1 个答案:

答案 0 :(得分: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
            }
        });
    }
}