001package io.freefair.spring.okhttp;
002
003import org.springframework.boot.autoconfigure.AutoConfigureBefore;
004import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
005import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
006import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
007import org.springframework.boot.web.client.RestTemplateCustomizer;
008import org.springframework.context.annotation.Bean;
009import org.springframework.context.annotation.Configuration;
010import org.springframework.core.annotation.Order;
011import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
012import org.springframework.web.client.RestTemplate;
013
014/**
015 * @author Lars Grefer
016 */
017@Configuration(proxyBeanMethods = false)
018@ConditionalOnClass({RestTemplateCustomizer.class, RestTemplate.class})
019@AutoConfigureBefore(RestTemplateAutoConfiguration.class)
020public class OkHttpRestTemplateAutoConfiguration {
021
022    @Bean
023    @Order(2)
024    @ConditionalOnBean(OkHttp3ClientHttpRequestFactory.class)
025    public RestTemplateCustomizer okHttp3RestTemplateCustomizer(OkHttp3ClientHttpRequestFactory requestFactory) {
026        return restTemplate -> restTemplate.setRequestFactory(requestFactory);
027    }
028
029}