diff --git a/pom.xml b/pom.xml
index e1b15c13..084a514f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -286,6 +286,11 @@
feign-hystrix
${feign.version}
+
+ com.netflix.feign
+ feign-okhttp
+ ${feign.version}
+
com.netflix.hystrix
hystrix-core
@@ -363,6 +368,11 @@
spring-integration-java-dsl
${spring-integration-dsl.version}
+
+ com.squareup.okhttp
+ okhttp
+ 2.5.0
+
com.google.guava
guava
diff --git a/spring-cloud-netflix-core/pom.xml b/spring-cloud-netflix-core/pom.xml
index 9f693ca8..b9fd731e 100644
--- a/spring-cloud-netflix-core/pom.xml
+++ b/spring-cloud-netflix-core/pom.xml
@@ -116,6 +116,11 @@
feign-hystrix
true
+
+ com.netflix.feign
+ feign-okhttp
+ true
+
com.netflix.hystrix
hystrix-core
@@ -176,6 +181,11 @@
jersey-apache-client4
true
+
+ com.squareup.okhttp
+ okhttp
+ true
+
org.projectlombok
lombok
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClientAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClientAutoConfiguration.java
index 5f90b45f..8abe20ae 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClientAutoConfiguration.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClientAutoConfiguration.java
@@ -33,6 +33,7 @@ import com.netflix.loadbalancer.ILoadBalancer;
import feign.Client;
import feign.Feign;
import feign.httpclient.ApacheHttpClient;
+import feign.okhttp.OkHttpClient;
/**
* Autoconfiguration to be activated if Feign is in use and needs to be use Ribbon as a
@@ -81,4 +82,28 @@ public class FeignRibbonClientAutoConfiguration {
return new LoadBalancerFeignClient(delegate, this.cachingFactory);
}
}
+
+ @Configuration
+ @ConditionalOnClass(OkHttpClient.class)
+ @ConditionalOnProperty(value = "feign.okhttp.enabled", matchIfMissing = true)
+ protected static class OkHttpConfiguration {
+
+ @Autowired(required = false)
+ private com.squareup.okhttp.OkHttpClient okHttpClient;
+
+ @Autowired
+ CachingSpringLoadBalancerFactory cachingFactory;
+
+ @Bean
+ public Client feignClient() {
+ OkHttpClient delegate;
+ if (this.okHttpClient != null) {
+ delegate = new OkHttpClient(this.okHttpClient);
+ }
+ else {
+ delegate = new OkHttpClient();
+ }
+ return new LoadBalancerFeignClient(delegate, this.cachingFactory);
+ }
+ }
}
\ No newline at end of file
diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java
index c29acebb..91aad97d 100644
--- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java
+++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java
@@ -74,7 +74,7 @@ import feign.RequestTemplate;
@WebIntegrationTest(randomPort = true, value = {
"spring.application.name=feignclienttest",
"logging.level.org.springframework.cloud.netflix.feign.valid=DEBUG",
- "feign.httpclient.enabled=false"})
+ "feign.httpclient.enabled=false", "feign.okhttp.enabled=false"})
@DirtiesContext
public class FeignClientTests {