From fd36a0cc7229d0205b4c4a7a3f7ced9bcb6eaf9a Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 15 Jun 2016 17:55:28 -0600 Subject: [PATCH] Default to HttpClientRibbonCommandFactory --- .../netflix/zuul/ZuulProxyConfiguration.java | 26 ++++++++++++++----- .../SampleZuulProxyWithHttpClientTests.java | 8 +----- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfiguration.java index c41f7b24..2c4a1ba8 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulProxyConfiguration.java @@ -21,6 +21,7 @@ import org.springframework.boot.actuate.endpoint.Endpoint; import org.springframework.boot.actuate.trace.TraceRepository; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cloud.client.actuator.HasFeatures; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.cloud.client.discovery.event.HeartbeatEvent; @@ -39,6 +40,7 @@ import org.springframework.cloud.netflix.zuul.filters.route.RestClientRibbonComm import org.springframework.cloud.netflix.zuul.filters.route.RibbonCommandFactory; import org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter; import org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilter; +import org.springframework.cloud.netflix.zuul.filters.route.apache.HttpClientRibbonCommandFactory; import org.springframework.cloud.netflix.zuul.web.ZuulHandlerMapping; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; @@ -55,9 +57,6 @@ public class ZuulProxyConfiguration extends ZuulConfiguration { @Autowired(required = false) private TraceRepository traces; - @Autowired - private SpringClientFactory clientFactory; - @Autowired private DiscoveryClient discovery; @@ -77,10 +76,23 @@ public class ZuulProxyConfiguration extends ZuulConfiguration { this.discovery, this.zuulProperties, this.serviceRouteMapper); } - @Bean - @ConditionalOnMissingBean - public RibbonCommandFactory ribbonCommandFactory() { - return new RestClientRibbonCommandFactory(this.clientFactory); + @Configuration + protected static class HttpClientRibbonConfiguration { + @Bean + @ConditionalOnMissingBean + public RibbonCommandFactory ribbonCommandFactory(SpringClientFactory clientFactory) { + return new HttpClientRibbonCommandFactory(clientFactory); + } + } + + @Configuration + @ConditionalOnProperty("zuul.ribbon.restclient.enabled") + protected static class RestClientRibbonConfiguration { + @Bean + @ConditionalOnMissingBean + public RibbonCommandFactory ribbonCommandFactory(SpringClientFactory clientFactory) { + return new RestClientRibbonCommandFactory(clientFactory); + } } // pre filters diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyWithHttpClientTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyWithHttpClientTests.java index 2bee1dc2..bc76eb55 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyWithHttpClientTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyWithHttpClientTests.java @@ -101,7 +101,7 @@ public class SampleZuulProxyWithHttpClientTests extends ZuulProxyTestBase { @Test public void ribbonCommandFactoryOverridden() { - assertTrue("ribbonCommandFactory not a MyRibbonCommandFactory", + assertTrue("ribbonCommandFactory not a HttpClientRibbonCommandFactory", this.ribbonCommandFactory instanceof HttpClientRibbonCommandFactory); } @@ -126,12 +126,6 @@ class SampleHttpClientZuulProxyApplication extends ZuulProxyTestBase.AbstractZuu return "Patched " + id + "!"; } - @Bean - public RibbonCommandFactory ribbonCommandFactory( - final SpringClientFactory clientFactory) { - return new HttpClientRibbonCommandFactory(clientFactory); - } - @Bean public MyErrorController myErrorController(ErrorAttributes errorAttributes) { return new MyErrorController(errorAttributes);