Spring Boot OAuth2RestTemplate и HTTP-клиент метрики

Привод управляет контрольно-измерительными приборами RestTemplateнам нужно только ввести RestTemplateBuilder создавать RestTemplate боб:

@Configuration
public class HttpClientConfiguration {
    private final RestTemplateBuilder restTemplateBuilder;

    // let Actuator manages the instrumentation
    public HttpClientConfiguration(RestTemplateBuilder restTemplateBuilder) {
        this.restTemplateBuilder = restTemplateBuilder;
    }

    @Bean // let Sleuth intercept requests
    public RestTemplate createRestTemplate() {
        return restTemplateBuilder.build();
    }
}

Как создать OAuth2RestTemplate bean (встроенный OAuth2) с поддержкой HTTP Client Mertics?

2 ответа

Я только что нашел решение:

@Configuration
@EnableOAuth2Client
public class OAuthClientConfig {
    private final MetricsRestTemplateCustomizer metricsRestTemplateCustomizer;

    public OAuthConfig(MetricsRestTemplateCustomizer metricsRestTemplateCustomizer) {
        this.metricsRestTemplateCustomizer=metricsRestTemplateCustomizer;
    }

    @Bean
    public OAuth2RestTemplate createOAuth2RestTemplate() {
        OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(
                getClientCredentialsResourceDetails(), 
                new DefaultOAuth2ClientContext());
        metricsRestTemplateCustomizer.customize(restTemplate);
        return restTemplate;
    }

    private ClientCredentialsResourceDetails getClientCredentialsResourceDetails() {
        ClientCredentialsResourceDetails rd = new ClientCredentialsResourceDetails();
        rd.setClientId("my-client-id");
        rd.setClientSecret("my-client-secret");
        rd.setAccessTokenUri("https://my-idp.server/oauth2/token");
        return rd;
    }
}

Это поздний ответ, но я искал что-то подобное и нашел способ предупреждения.

Настроенный Spring Boot RestTemplateBuilder добавляет больше, чем просто Mertics HTTP-клиента (см. RestTemplateAutoConfiguration). Если вы не хотите их потерять, вы все равно можете использовать автоматически настроенный RestTemplateBuilder для настройки OAuth2RestTemplate следующим образом:

      @Configuration
public class OAuthClientConfig {

    @Bean
    public OAuth2RestTemplate createOAuth2RestTemplate(RestTemplateBuilder builder) {
        // Create and setup your OAuth2RestTemplate:
        OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(....);
        
        // let the auto-configure builder configure your template:
        return builder.configure(restTemplate);
    }
}
Другие вопросы по тегам