diff --git a/core-java/src/main/resources/countries.properties b/core-java/src/main/resources/countries.properties
index 3c1f53aded..e743b5a40b 100644
--- a/core-java/src/main/resources/countries.properties
+++ b/core-java/src/main/resources/countries.properties
@@ -1,3 +1,3 @@
-UK
-US
-Germany
+UK
+US
+Germany
diff --git a/libraries/helloWorld.docx b/libraries/helloWorld.docx
new file mode 100644
index 0000000000..a58ff2d80a
Binary files /dev/null and b/libraries/helloWorld.docx differ
diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml
index e6d78f292d..d11455f90c 100644
--- a/spring-cloud/pom.xml
+++ b/spring-cloud/pom.xml
@@ -19,6 +19,7 @@
spring-cloud-stream
spring-cloud-connectors-heroku
spring-cloud-aws
+ spring-cloud-consul
pom
diff --git a/spring-cloud/spring-cloud-consul/pom.xml b/spring-cloud/spring-cloud-consul/pom.xml
new file mode 100644
index 0000000000..0a0650ec8b
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+
+ org.baeldung
+ spring-cloud-consul
+ jar
+
+ spring-cloud-consul
+
+
+ com.baeldung.spring.cloud
+ spring-cloud
+ 1.0.0-SNAPSHOT
+
+
+
+ UTF-8
+ 3.6.0
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+ 1.3.0.RELEASE
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-config
+ 1.3.0.RELEASE
+
+
+
+
+
+
+
+ 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}
+
+
+
+
+
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/DiscoveryClientApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/DiscoveryClientApplication.java
new file mode 100644
index 0000000000..e5e18d71ff
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/DiscoveryClientApplication.java
@@ -0,0 +1,53 @@
+package com.baeldung.spring.cloud.consul;
+
+import java.net.URI;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@EnableDiscoveryClient
+@RestController
+public class DiscoveryClientApplication {
+
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Autowired
+ private DiscoveryClient discoveryClient;
+
+ @RequestMapping("/discoveryClient")
+ public String home() {
+ return this.restTemplate.getForEntity(serviceUrl().resolve("/ping"), String.class)
+ .getBody();
+ }
+
+ public URI serviceUrl() {
+ List list = discoveryClient.getInstances("myApp");
+ if (list != null && list.size() > 0) {
+ return list.get(0)
+ .getUri();
+ }
+
+ return null;
+ }
+
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(DiscoveryClientApplication.class).web(true)
+ .run(args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/DistributedPropertiesApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/DistributedPropertiesApplication.java
new file mode 100644
index 0000000000..12ecd96b26
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/DistributedPropertiesApplication.java
@@ -0,0 +1,36 @@
+package com.baeldung.spring.cloud.consul;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.baeldung.spring.cloud.consul.properties.MyProperties;
+
+@SpringBootApplication
+@RestController
+public class DistributedPropertiesApplication {
+
+ @Value("${my.prop}")
+ String value;
+
+ @Autowired
+ private MyProperties properties;
+
+ @RequestMapping("/getConfigFromValue")
+ public String getConfigFromValue() {
+ return value;
+ }
+
+ @RequestMapping("/getConfigFromProperty")
+ public String getConfigFromProperty() {
+ return properties.getProp();
+ }
+
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(DistributedPropertiesApplication.class).web(true)
+ .run(args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/RibbonClientApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/RibbonClientApplication.java
new file mode 100644
index 0000000000..620c3553ba
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/RibbonClientApplication.java
@@ -0,0 +1,34 @@
+package com.baeldung.spring.cloud.consul;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+@SpringBootApplication
+@RestController
+public class RibbonClientApplication {
+
+ @LoadBalanced
+ @Bean
+ public RestTemplate loadbalancedRestTemplate() {
+ return new RestTemplate();
+ }
+
+ @Autowired
+ RestTemplate restTemplate;
+
+ @RequestMapping("/ribbonClient")
+ public String home() {
+ return this.restTemplate.getForObject("http://myApp/ping", String.class);
+ }
+
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(RibbonClientApplication.class).web(true)
+ .run(args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/ServiceDiscoveryApplication.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/ServiceDiscoveryApplication.java
new file mode 100644
index 0000000000..5da8105d01
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/ServiceDiscoveryApplication.java
@@ -0,0 +1,29 @@
+package com.baeldung.spring.cloud.consul;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@SpringBootApplication
+@RestController
+public class ServiceDiscoveryApplication {
+ @RequestMapping("/my-health-check")
+ public ResponseEntity myCustomCheck() {
+ String message = "Testing my healh check function";
+ return new ResponseEntity<>(message, HttpStatus.FORBIDDEN);
+ }
+
+ @RequestMapping("/ping")
+ public String ping() {
+ return "pong";
+ }
+
+ public static void main(String[] args) {
+ new SpringApplicationBuilder(ServiceDiscoveryApplication.class).web(true)
+ .run(args);
+ }
+
+}
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/MyProperties.java b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/MyProperties.java
new file mode 100644
index 0000000000..7accac168d
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/java/com/baeldung/spring/cloud/consul/properties/MyProperties.java
@@ -0,0 +1,20 @@
+package com.baeldung.spring.cloud.consul.properties;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+@RefreshScope
+@Configuration
+@ConfigurationProperties("my")
+public class MyProperties {
+ private String prop;
+
+ public String getProp() {
+ return prop;
+ }
+
+ public void setProp(String prop) {
+ this.prop = prop;
+ }
+}
diff --git a/spring-cloud/spring-cloud-consul/src/main/resources/application.yml b/spring-cloud/spring-cloud-consul/src/main/resources/application.yml
new file mode 100644
index 0000000000..ccdc3fdeee
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/resources/application.yml
@@ -0,0 +1,14 @@
+spring:
+ application:
+ name: myApp
+ cloud:
+ consul:
+ host: localhost
+ port: 8500
+ discovery:
+ healthCheckPath: /my-health-check
+ healthCheckInterval: 20s
+ enabled: true
+ instanceId: ${spring.application.name}:${random.value}
+server:
+ port: 0
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-consul/src/main/resources/bootstrap.yml b/spring-cloud/spring-cloud-consul/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000000..6318170135
--- /dev/null
+++ b/spring-cloud/spring-cloud-consul/src/main/resources/bootstrap.yml
@@ -0,0 +1,9 @@
+spring:
+ application:
+ name: myApp
+ cloud:
+ consul:
+ host: localhost
+ port: 8500
+ config:
+ enabled: true
\ No newline at end of file