diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java index 37434ff6..3ba3bbf6 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java @@ -4,9 +4,11 @@ import feign.Client; import feign.Contract; import feign.Feign; import feign.Logger; + import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.cloud.netflix.feign.ribbon.FeignRibbonClient; +import org.springframework.cloud.netflix.ribbon.SpringClientFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration; @@ -46,8 +48,8 @@ public class FeignAutoConfiguration { @Configuration protected static class RibbonClientConfiguration { @Bean - public Client feignRibbonClient() { - return new FeignRibbonClient(); + public Client feignRibbonClient(SpringClientFactory factory) { + return new FeignRibbonClient(factory); } } } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClient.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClient.java index 73c4df33..d8d1207a 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClient.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/ribbon/FeignRibbonClient.java @@ -7,9 +7,10 @@ import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSocketFactory; +import org.springframework.cloud.netflix.ribbon.SpringClientFactory; + import com.google.common.base.Throwables; import com.netflix.client.ClientException; -import com.netflix.client.ClientFactory; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.ILoadBalancer; @@ -36,8 +37,13 @@ public class FeignRibbonClient implements Client { return HttpsURLConnection.getDefaultHostnameVerifier(); } }); + private SpringClientFactory factory; - @Override + public FeignRibbonClient(SpringClientFactory factory) { + this.factory = factory; + } + + @Override public Response execute(Request request, Request.Options options) throws IOException { try { @@ -56,8 +62,8 @@ public class FeignRibbonClient implements Client { } private RibbonLoadBalancer lbClient(String clientName) { - IClientConfig config = ClientFactory.getNamedConfig(clientName); - ILoadBalancer lb = ClientFactory.getNamedLoadBalancer(clientName); + IClientConfig config = factory.getClientConfig(clientName); + ILoadBalancer lb = factory.getLoadBalancer(clientName); return new RibbonLoadBalancer(defaultClient, lb, config); } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/SpringClientFactory.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/SpringClientFactory.java index 2b21f63a..4b9d2c5f 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/SpringClientFactory.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/SpringClientFactory.java @@ -72,6 +72,15 @@ public class SpringClientFactory implements DisposableBean, ApplicationContextAw return getInstance(name, ILoadBalancer.class); } + /** + * Get the client config associated with the name. + * + * @throws RuntimeException if any error occurs + */ + public IClientConfig getClientConfig(String name) { + return getInstance(name, IClientConfig.class); + } + /** * Get the load balancer context associated with the name. *