diff --git a/pom.xml b/pom.xml
index f77904fa..19c89ee0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,20 +186,9 @@
com.netflix.feign
- feign-ribbon
+ feign-core
${feign.version}
-
- com.netflix.feign
- feign-slf4j
- ${feign.version}
-
-
- org.projectlombok
- lombok
- 1.12.6
- provided
-
org.spockframework
@@ -237,19 +226,15 @@
2.4.4
test
-
- com.netflix.feign
- feign-core
- ${feign.version}
-
1.1.0.BUILD-SNAPSHOT
1.1.0.BUILD-SNAPSHOT
- 0.7.1
2.8.0
+
+ 0.7.1
2.1.0
8.10.0
1.0-groovy-2.4
diff --git a/spring-cloud-zookeeper-discovery/pom.xml b/spring-cloud-zookeeper-discovery/pom.xml
index ce44a7f0..b56258c6 100644
--- a/spring-cloud-zookeeper-discovery/pom.xml
+++ b/spring-cloud-zookeeper-discovery/pom.xml
@@ -107,16 +107,6 @@
feign-core
true
-
- com.netflix.feign
- feign-ribbon
- true
-
-
- com.netflix.feign
- feign-slf4j
- true
-
org.projectlombok
lombok
@@ -169,6 +159,12 @@
groovy-all
test
+
+ org.springframework.cloud
+ spring-cloud-starter-feign
+ ${spring-cloud-netflix.version}
+ test
+
com.github.tomakehurst
wiremock
diff --git a/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/dependency/DependencyFeignClientAutoConfiguration.java b/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/dependency/DependencyFeignClientAutoConfiguration.java
index 9a0e7e8e..c35e3c82 100644
--- a/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/dependency/DependencyFeignClientAutoConfiguration.java
+++ b/spring-cloud-zookeeper-discovery/src/main/java/org/springframework/cloud/zookeeper/discovery/dependency/DependencyFeignClientAutoConfiguration.java
@@ -23,8 +23,10 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.cloud.netflix.feign.ribbon.CachingSpringLoadBalancerFactory;
import org.springframework.cloud.netflix.feign.ribbon.LoadBalancerFeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -33,7 +35,6 @@ import org.springframework.context.annotation.Primary;
import feign.Client;
import feign.Request;
import feign.Response;
-import feign.ribbon.RibbonClient;
/**
*
@@ -44,16 +45,21 @@ import feign.ribbon.RibbonClient;
@Configuration
@ConditionalOnDependenciesPassed
@ConditionalOnProperty(value = "spring.cloud.zookeeper.dependencies.headers.enabled", matchIfMissing = true)
-@ConditionalOnClass({ Client.class, RibbonClient.class })
+@ConditionalOnClass({ Client.class, LoadBalancerFeignClient.class })
public class DependencyFeignClientAutoConfiguration {
+ @Autowired
+ private LoadBalancerFeignClient ribbonClient;
+
+ @Autowired
+ private ZookeeperDependencies zookeeperDependencies;
+
+ @Autowired
+ private CachingSpringLoadBalancerFactory loadBalancerFactory;
@Bean
@Primary
- @SuppressWarnings("deprecation")
- Client dependencyBasedFeignClient(final LoadBalancerFeignClient ribbonClient,
- final ZookeeperDependencies zookeeperDependencies) {
- // TODO: remove dependency on feign-ribbon
- return new RibbonClient() {
+ Client dependencyBasedFeignClient() {
+ return new LoadBalancerFeignClient(new Client.Default(null, null), loadBalancerFactory) {
@Override
public Response execute(Request request, Request.Options options)
throws IOException {
diff --git a/spring-cloud-zookeeper-sample/pom.xml b/spring-cloud-zookeeper-sample/pom.xml
index a3e66e17..bd1db15d 100644
--- a/spring-cloud-zookeeper-sample/pom.xml
+++ b/spring-cloud-zookeeper-sample/pom.xml
@@ -40,6 +40,11 @@
org.springframework.boot
spring-boot-starter-actuator
+
+ org.springframework.cloud
+ spring-cloud-starter-feign
+ ${spring-cloud-netflix.version}
+
org.projectlombok
lombok
diff --git a/spring-cloud-zookeeper-sample/src/main/java/org/springframework/cloud/zookeeper/sample/SampleZookeeperApplication.java b/spring-cloud-zookeeper-sample/src/main/java/org/springframework/cloud/zookeeper/sample/SampleZookeeperApplication.java
index 02bcb9c2..35fca373 100644
--- a/spring-cloud-zookeeper-sample/src/main/java/org/springframework/cloud/zookeeper/sample/SampleZookeeperApplication.java
+++ b/spring-cloud-zookeeper-sample/src/main/java/org/springframework/cloud/zookeeper/sample/SampleZookeeperApplication.java
@@ -16,8 +16,6 @@
package org.springframework.cloud.zookeeper.sample;
-import lombok.extern.slf4j.Slf4j;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
@@ -26,9 +24,12 @@ import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
+import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@@ -39,7 +40,7 @@ import org.springframework.web.bind.annotation.RestController;
@EnableAutoConfiguration
@EnableDiscoveryClient
@RestController
-@Slf4j
+@EnableFeignClients
public class SampleZookeeperApplication {
@Value("${spring.application.name:testZookeeperApp}")
@@ -51,21 +52,37 @@ public class SampleZookeeperApplication {
@Autowired
private Environment env;
- @Autowired(required = false)
- private RelaxedPropertyResolver resolver;
-
- public static void main(String[] args) {
- SpringApplication.run(SampleZookeeperApplication.class, args);
- }
+ @Autowired
+ private AppClient appClient;
@RequestMapping("/")
public ServiceInstance lb() {
return loadBalancer.choose(appName);
}
+ @RequestMapping("/hi")
+ public String hi() {
+ return "Hello World!";
+ }
+
+ @RequestMapping("/self")
+ public String self() {
+ return appClient.hi();
+ }
+
@RequestMapping("/myenv")
public String env(@RequestParam("prop") String prop) {
String property = new RelaxedPropertyResolver(env).getProperty(prop, "Not Found");
return property;
}
+
+ @FeignClient("testZookeeperApp")
+ interface AppClient {
+ @RequestMapping(value = "/hi", method = RequestMethod.GET)
+ String hi();
+ }
+
+ public static void main(String[] args) {
+ SpringApplication.run(SampleZookeeperApplication.class, args);
+ }
}
diff --git a/spring-cloud-zookeeper-sample/src/main/resources/application.yml b/spring-cloud-zookeeper-sample/src/main/resources/application.yml
index 6901623d..d2e2e420 100644
--- a/spring-cloud-zookeeper-sample/src/main/resources/application.yml
+++ b/spring-cloud-zookeeper-sample/src/main/resources/application.yml
@@ -10,4 +10,7 @@ endpoints:
sensitive: false
logging.level:
- org.apache.zookeeper.ClientCnxn: WARN
\ No newline at end of file
+ org.apache.zookeeper.ClientCnxn: WARN
+
+#spring.cloud.zookeeper.dependencies:
+# - testZookeeperApp: ~
\ No newline at end of file