Skip to content

Commit 966e03b

Browse files
jmnarlochspencergibb
authored andcommitted
Feign OkHttp client configuration
1 parent 22f4b82 commit 966e03b

File tree

4 files changed

+46
-1
lines changed

4 files changed

+46
-1
lines changed

pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,11 @@
286286
<artifactId>feign-hystrix</artifactId>
287287
<version>${feign.version}</version>
288288
</dependency>
289+
<dependency>
290+
<groupId>com.netflix.feign</groupId>
291+
<artifactId>feign-okhttp</artifactId>
292+
<version>${feign.version}</version>
293+
</dependency>
289294
<dependency>
290295
<groupId>com.netflix.hystrix</groupId>
291296
<artifactId>hystrix-core</artifactId>
@@ -363,6 +368,11 @@
363368
<artifactId>spring-integration-java-dsl</artifactId>
364369
<version>${spring-integration-dsl.version}</version>
365370
</dependency>
371+
<dependency>
372+
<groupId>com.squareup.okhttp</groupId>
373+
<artifactId>okhttp</artifactId>
374+
<version>2.5.0</version>
375+
</dependency>
366376
<dependency>
367377
<groupId>com.google.guava</groupId>
368378
<artifactId>guava</artifactId>

spring-cloud-netflix-core/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@
116116
<artifactId>feign-hystrix</artifactId>
117117
<optional>true</optional>
118118
</dependency>
119+
<dependency>
120+
<groupId>com.netflix.feign</groupId>
121+
<artifactId>feign-okhttp</artifactId>
122+
<optional>true</optional>
123+
</dependency>
119124
<dependency>
120125
<groupId>com.netflix.hystrix</groupId>
121126
<artifactId>hystrix-core</artifactId>
@@ -176,6 +181,11 @@
176181
<artifactId>jersey-apache-client4</artifactId>
177182
<optional>true</optional>
178183
</dependency>
184+
<dependency>
185+
<groupId>com.squareup.okhttp</groupId>
186+
<artifactId>okhttp</artifactId>
187+
<optional>true</optional>
188+
</dependency>
179189
<dependency>
180190
<groupId>org.projectlombok</groupId>
181191
<artifactId>lombok</artifactId>

spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClientAutoConfiguration.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import feign.Client;
3434
import feign.Feign;
3535
import feign.httpclient.ApacheHttpClient;
36+
import feign.okhttp.OkHttpClient;
3637

3738
/**
3839
* Autoconfiguration to be activated if Feign is in use and needs to be use Ribbon as a
@@ -81,4 +82,28 @@ public Client feignClient() {
8182
return new LoadBalancerFeignClient(delegate, this.cachingFactory);
8283
}
8384
}
85+
86+
@Configuration
87+
@ConditionalOnClass(OkHttpClient.class)
88+
@ConditionalOnProperty(value = "feign.okhttp.enabled", matchIfMissing = true)
89+
protected static class OkHttpConfiguration {
90+
91+
@Autowired(required = false)
92+
private com.squareup.okhttp.OkHttpClient okHttpClient;
93+
94+
@Autowired
95+
CachingSpringLoadBalancerFactory cachingFactory;
96+
97+
@Bean
98+
public Client feignClient() {
99+
OkHttpClient delegate;
100+
if (this.okHttpClient != null) {
101+
delegate = new OkHttpClient(this.okHttpClient);
102+
}
103+
else {
104+
delegate = new OkHttpClient();
105+
}
106+
return new LoadBalancerFeignClient(delegate, this.cachingFactory);
107+
}
108+
}
84109
}

spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/feign/valid/FeignClientTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
@WebIntegrationTest(randomPort = true, value = {
7575
"spring.application.name=feignclienttest",
7676
"logging.level.org.springframework.cloud.netflix.feign.valid=DEBUG",
77-
"feign.httpclient.enabled=false"})
77+
"feign.httpclient.enabled=false", "feign.okhttp.enabled=false"})
7878
@DirtiesContext
7979
public class FeignClientTests {
8080

0 commit comments

Comments
 (0)