diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml
index 374f7010c6..d94b334bc8 100644
--- a/spring-cloud/pom.xml
+++ b/spring-cloud/pom.xml
@@ -20,7 +20,8 @@
spring-cloud-connectors-heroku
spring-cloud-aws
spring-cloud-consul
-
+ spring-cloud-zuul-eureka-integration
+
pom
spring-cloud
@@ -45,6 +46,7 @@
1.4.2.RELEASE
3.7.0
1.4.2.RELEASE
+ 1.2.3.RELEASE
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml
new file mode 100644
index 0000000000..a3185a44d4
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+ eureka-client
+ 1.0.0-SNAPSHOT
+ jar
+
+ Spring Cloud Eureka Client
+ Spring Cloud Eureka Sample Client
+
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+ ${spring-cloud-starter-eureka.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot-starter-web.version}
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-parent
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+ Brixton.SR7
+ 1.2.3.RELEASE
+ 1.4.2.RELEASE
+
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/src/main/resources/application.yml
new file mode 100644
index 0000000000..08624aa159
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/src/main/resources/application.yml
@@ -0,0 +1,13 @@
+spring:
+ application:
+ name: spring-cloud-eureka-client
+
+server:
+ port: 0
+
+eureka:
+ client:
+ serviceUrl:
+ defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
+ instance:
+ preferIpAddress: true
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/pom.xml
new file mode 100644
index 0000000000..d86cfa8589
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+ eureka-server
+ 1.0.0-SNAPSHOT
+ jar
+
+ Spring Cloud Eureka Server
+ Spring Cloud Eureka Server Demo
+
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka-server
+ ${spring-cloud-starter-eureka.version}
+
+
+ commons-configuration
+ commons-configuration
+ ${commons-config.version}
+
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-parent
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+ Brixton.SR7
+ 1.2.3.RELEASE
+
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/src/main/resources/application.yml
new file mode 100644
index 0000000000..49c3179bb5
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-server/src/main/resources/application.yml
@@ -0,0 +1,7 @@
+server:
+ port: 8761
+
+eureka:
+ client:
+ registerWithEureka: false
+ fetchRegistry: false
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/pom.xml
new file mode 100644
index 0000000000..fabad77a77
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/pom.xml
@@ -0,0 +1,55 @@
+
+
+ 4.0.0
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+ pom
+
+ Spring Cloud Zuul and Eureka Integration
+ Spring Cloud Zuul and Eureka Integration
+
+
+ com.baeldung.spring.cloud
+ spring-cloud
+ 1.0.0-SNAPSHOT
+ ..
+
+
+
+ UTF-8
+ 3.7.0
+ 1.4.2.RELEASE
+ 1.10
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot-maven-plugin.version}
+
+
+
+
+
+ zuul-server
+ eureka-server
+ eureka-client
+
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/pom.xml
new file mode 100644
index 0000000000..2622a3e36b
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/pom.xml
@@ -0,0 +1,61 @@
+
+ 4.0.0
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+ zuul-server
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.cloud
+ spring-cloud-starter-zuul
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+ commons-configuration
+ commons-configuration
+ ${commons-config.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-parent
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/src/main/resources/application.properties b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/src/main/resources/application.properties
new file mode 100644
index 0000000000..cb1dca78c2
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/zuul-server/src/main/resources/application.properties
@@ -0,0 +1,9 @@
+server.port=8762
+spring.application.name=zuul-server
+eureka.instance.preferIpAddress=true
+eureka.client.registerWithEureka=true
+eureka.client.fetchRegistry=true
+eureka.serviceurl.defaultzone=http://localhost:8761/eureka/
+management.security.enabled=false
+security.basic.enabled=false
+hystrix.command.default.execution.timeout.enabled=false
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml
new file mode 100644
index 0000000000..a3185a44d4
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+ eureka-client
+ 1.0.0-SNAPSHOT
+ jar
+
+ Spring Cloud Eureka Client
+ Spring Cloud Eureka Sample Client
+
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+ ${spring-cloud-starter-eureka.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot-starter-web.version}
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-parent
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+ Brixton.SR7
+ 1.2.3.RELEASE
+ 1.4.2.RELEASE
+
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java
new file mode 100644
index 0000000000..906d6e4cfd
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/EurekaClientApplication.java
@@ -0,0 +1,32 @@
+package com.baeldung.spring.cloud.eureka.client;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.netflix.discovery.EurekaClient;
+
+@SpringBootApplication
+@EnableEurekaClient
+@RestController
+public class EurekaClientApplication implements GreetingController {
+ @Autowired
+ @Lazy
+ private EurekaClient eurekaClient;
+
+ @Value("${spring.application.name}")
+ private String appName;
+
+ public static void main(String[] args) {
+ SpringApplication.run(EurekaClientApplication.class, args);
+ }
+
+ @Override
+ public String greeting() {
+ return String.format("Hello from '%s'!", eurekaClient.getApplication(appName).getName());
+ }
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/GreetingController.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/GreetingController.java
new file mode 100644
index 0000000000..33ee2574b7
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/java/com/baeldung/spring/cloud/eureka/client/GreetingController.java
@@ -0,0 +1,8 @@
+package com.baeldung.spring.cloud.eureka.client;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+public interface GreetingController {
+ @RequestMapping("/greeting")
+ String greeting();
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml
new file mode 100644
index 0000000000..08624aa159
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/src/main/resources/application.yml
@@ -0,0 +1,13 @@
+spring:
+ application:
+ name: spring-cloud-eureka-client
+
+server:
+ port: 0
+
+eureka:
+ client:
+ serviceUrl:
+ defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
+ instance:
+ preferIpAddress: true
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml
new file mode 100644
index 0000000000..d86cfa8589
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+ eureka-server
+ 1.0.0-SNAPSHOT
+ jar
+
+ Spring Cloud Eureka Server
+ Spring Cloud Eureka Server Demo
+
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka-server
+ ${spring-cloud-starter-eureka.version}
+
+
+ commons-configuration
+ commons-configuration
+ ${commons-config.version}
+
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-parent
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+ Brixton.SR7
+ 1.2.3.RELEASE
+
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/java/com/baeldung/spring/cloud/eureka/server/EurekaServerApplication.java b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/java/com/baeldung/spring/cloud/eureka/server/EurekaServerApplication.java
new file mode 100644
index 0000000000..d55145448d
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/java/com/baeldung/spring/cloud/eureka/server/EurekaServerApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.spring.cloud.eureka.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
+
+@SpringBootApplication
+@EnableEurekaServer
+public class EurekaServerApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(EurekaServerApplication.class, args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/resources/application.yml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/resources/application.yml
new file mode 100644
index 0000000000..49c3179bb5
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/src/main/resources/application.yml
@@ -0,0 +1,7 @@
+server:
+ port: 8761
+
+eureka:
+ client:
+ registerWithEureka: false
+ fetchRegistry: false
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml
new file mode 100644
index 0000000000..b4c7188abe
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+ pom
+
+ Spring Cloud Zuul and Eureka Integration
+ Spring Cloud Zuul and Eureka Integration
+
+
+ com.baeldung.spring.cloud
+ spring-cloud
+ 1.0.0-SNAPSHOT
+ ..
+
+
+
+ UTF-8
+ 3.7.0
+ 1.4.2.RELEASE
+ 1.10
+ 1.2.10
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot-maven-plugin.version}
+
+
+
+
+
+ zuul-server
+ eureka-server
+ eureka-client
+
+
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml
new file mode 100644
index 0000000000..b68fd63155
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml
@@ -0,0 +1,66 @@
+
+ 4.0.0
+
+ com.baeldung.spring.cloud
+ spring-cloud-zuul-eureka-integration
+ 1.0.0-SNAPSHOT
+
+ zuul-server
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.cloud
+ spring-cloud-starter-zuul
+
+
+ org.springframework.cloud
+ spring-cloud-starter-eureka
+
+
+ commons-configuration
+ commons-configuration
+ ${commons-config.version}
+
+
+ io.reactivex
+ rxjava
+ ${rxjava.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-parent
+ ${spring-cloud-dependencies.version}
+ pom
+ import
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.7.0
+
+ 1.8
+ 1.8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/java/com/baeldung/spring/cloud/zuul/config/ZuulConfig.java b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/java/com/baeldung/spring/cloud/zuul/config/ZuulConfig.java
new file mode 100644
index 0000000000..52488cad69
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/java/com/baeldung/spring/cloud/zuul/config/ZuulConfig.java
@@ -0,0 +1,15 @@
+package com.baeldung.spring.cloud.zuul.config;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
+
+@SpringBootApplication
+@EnableZuulProxy
+@EnableDiscoveryClient
+public class ZuulConfig {
+ public static void main(String[] args) {
+ SpringApplication.run(ZuulConfig.class, args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties
new file mode 100644
index 0000000000..cb1dca78c2
--- /dev/null
+++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/src/main/resources/application.properties
@@ -0,0 +1,9 @@
+server.port=8762
+spring.application.name=zuul-server
+eureka.instance.preferIpAddress=true
+eureka.client.registerWithEureka=true
+eureka.client.fetchRegistry=true
+eureka.serviceurl.defaultzone=http://localhost:8761/eureka/
+management.security.enabled=false
+security.basic.enabled=false
+hystrix.command.default.execution.timeout.enabled=false