{"id":40877,"date":"2015-06-15T22:00:28","date_gmt":"2015-06-15T19:00:28","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/?p=40877"},"modified":"2015-06-15T08:29:25","modified_gmt":"2015-06-15T05:29:25","slug":"learning-spring-cloud-infrastructure-and-configuration","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html","title":{"rendered":"Learning Spring-Cloud &#8211; Infrastructure and Configuration"},"content":{"rendered":"<p>I got a chance to play with <a href=\"http:\/\/projects.spring.io\/spring-cloud\/\">Spring-Cloud<\/a> to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different infrastructure components and services to work together nicely.<\/p>\n<p>I am used to creating microservices based on <a href=\"https:\/\/github.com\/netflix\">Netflix OSS based <\/a> stack and typically in a Netflix stack <a href=\"https:\/\/github.com\/Netflix\/eureka\">Eureka<\/a> is considered the hub using which the microservices register themselves and discover each other. In the spirit of this model, I wanted to try out a series of services which look like this:<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Sample-ping-pong.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-40878\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Sample-ping-pong.png\" alt=\"Sample-ping-pong\" width=\"640\" height=\"506\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Sample-ping-pong.png 640w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Sample-ping-pong-300x237.png 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>There are 2 microservices here:<\/p>\n<ul>\n<li>A sample-pong service which responds to &#8220;ping&#8221; messages<\/li>\n<li>A sample-ping service which uses the &#8220;pong&#8221; micro-service<\/li>\n<\/ul>\n<p>And there are two infrastructure components:<\/p>\n<ul>\n<li>Sample-config which provides a centralized configuration for the 2 microservices<\/li>\n<li>Eureka which is the central hub providing a way for the services to register themselves and discover other services<\/li>\n<\/ul>\n<p>So to start with, here I will introduce how I went about using spring-cloud to develop the two infrastructure components and follow it up with how the microservices can be developed to use these components.<\/p>\n<ul>\n<li>The entire project is available at my <a href=\"https:\/\/github.com\/bijukunjummen\/spring-cloud-ping-pong-sample\">github location<\/a>.<\/li>\n<\/ul>\n<h2>Eureka<\/h2>\n<p>Spring-cloud makes it very simple to bring up an instance of Eureka, all that is required is a class along the following lines:<\/p>\n<pre class=\" brush:java\">package org.bk.eureka;\r\n\r\nimport org.springframework.boot.SpringApplication;\r\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\r\nimport org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;\r\n\r\n@SpringBootApplication\r\n@EnableEurekaServer\r\npublic class EurekaApplication {\r\n\r\n    public static void main(String[] args) {\r\n        SpringApplication.run(EurekaApplication.class, args);\r\n    }\r\n}<\/pre>\n<p>Multiple instances of Eureka can be started up and can be configured to work together in a resilient way, here though I just want a demo standalone Eureka instance and this can be done using a configuration which looks like this, essentially starting up eureka on port 8761 and in a standalone mode by not trying to look for peers:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<pre class=\" brush:java\">---\r\n# application.yml\r\nserver:\r\n  port: 8761\r\n\r\neureka:\r\n  instance:\r\n    hostname: localhost\r\n  client:\r\n    registerWithEureka: false\r\n    fetchRegistry: false<\/pre>\n<h2>Configuration Server<\/h2>\n<p>Spring-Cloud provides a centralized configuration server that microservices can use for loading up their properties. Typically microservices may want to go one of two ways:<\/p>\n<ol>\n<li>Use Eureka as a hub and find the configuration services<\/li>\n<li>Use Configuration services and find Eureka<\/li>\n<\/ol>\n<p>I personally prefer the Eureka first approach, in this sample Configuration server registers itself with Eureka and when microservices come up they first check with Eureka, find the Configuration service and use the service to load up their properties.<\/p>\n<p>The configuration server is simple to write using Spring-cloud too, the following is all the code that is required:<\/p>\n<pre class=\" brush:java\">package org.bk.configserver;\r\n\r\nimport org.springframework.boot.SpringApplication;\r\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\r\nimport org.springframework.cloud.config.server.EnableConfigServer;\r\nimport org.springframework.cloud.netflix.eureka.EnableEurekaClient;\r\n\r\n@SpringBootApplication\r\n@EnableConfigServer\r\n@EnableEurekaClient\r\npublic class ConfigServerApplication {\r\n\r\n    public static void main(String[] args) {\r\n        SpringApplication.run(ConfigServerApplication.class, args);\r\n    }\r\n}<\/pre>\n<p>and the configuration that registers this service with Eureka:<\/p>\n<pre class=\" brush:java\">---\r\n# bootstrap.yml\r\nspring:\r\n  application:\r\n    name: sample-config\r\n  profiles:\r\n    active: native\r\n\r\neureka:\r\n  instance:\r\n    nonSecurePort: ${server.port:8888}\r\n  client:\r\n    serviceUrl:\r\n      defaultZone: http:\/\/${eureka.host:localhost}:${eureka.port:8761}\/eureka\/<\/pre>\n<pre class=\" brush:java\">---\r\n# application.yml\r\nspring:\r\n  cloud:\r\n    config:\r\n      server:\r\n        native:\r\n          searchLocations: classpath:\/config\r\n\r\nserver:\r\n  port: 8888<\/pre>\n<p>The configuration server is being started at port 8888, and provides configuration from the classpath. In a real application, the configuration can be set to load from a central git repository, this way providing a clean way to version properties and the ability to centrally manage the properties. In this specific case, since it provides properties for two microservices, there are two sets of files in the classpath and provide appropriate properties to the calling application:<\/p>\n<pre class=\" brush:java\">---\r\n#sample-pong.yml\r\nreply:\r\n  message: Pong<\/pre>\n<pre class=\" brush:java\">---\r\n# sample-ping.yml\r\nsend:\r\n  message: Ping<\/pre>\n<h2>Starting up Eureka and Configuration Server<\/h2>\n<p>Since both these applications are Spring-boot based, they can each be started up by running the following command:<\/p>\n<pre class=\" brush:java\">mvn spring-boot:run<\/pre>\n<p>Once Eureka and Configuration server come up cleanly., Eureka provides a nice interface with details of the services registered with it, in this case the Configuration server shows up with a name of &#8220;SAMPLE-CONFIG&#8221;:<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Spring-Cloud-Eureka.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-40879\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Spring-Cloud-Eureka-1024x584.png\" alt=\"Spring-Cloud-Eureka\" width=\"620\" height=\"354\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Spring-Cloud-Eureka-1024x584.png 1024w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Spring-Cloud-Eureka-300x171.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2015\/06\/Spring-Cloud-Eureka.png 1600w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>The config server provides properties to the calling applications through endpoints with the pattern: <code>\/{application}\/{profile}[\/{label}]<\/code><\/p>\n<p>So to retrieve the properties for &#8220;sample-pong&#8221; application, the following url is used internally by the application: <code>http:\/\/localhost:8888\/sample-pong\/default<\/code><\/p>\n<p>and for the &#8220;sample-ping&#8221; application the properties can be derived from <code>http:\/\/localhost:8888\/sample-ping\/default<\/code><\/p>\n<p>This concludes the details around bringing up the Infrastructure components of a Cloud ready system. \u00a0I will follow it up with how the microservices can be developed that make use of these infrastructure components.<\/p>\n<ul>\n<li>The code behind these samples are available at m<a href=\"https:\/\/github.com\/bijukunjummen\/spring-cloud-ping-pong-sample\">my github repository<\/a>.<\/li>\n<\/ul>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"http:\/\/www.java-allandsundry.com\/2015\/06\/learning-spring-cloud-infrastructure.html\">Learning Spring-Cloud &#8211; Infrastructure and Configuration<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/jcg\/\">JCG partner<\/a> Biju Kunjummen at the <a href=\"http:\/\/www.java-allandsundry.com\/\">all and sundry<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different infrastructure components and services to work together nicely. I am used to creating microservices based on Netflix OSS based stack and typically in a Netflix stack Eureka is &hellip;<\/p>\n","protected":false},"author":236,"featured_media":240,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[210,30,992],"class_list":["post-40877","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-cloud","tag-spring","tag-spring-cloud"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Learning Spring-Cloud - Infrastructure and Configuration - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Learning Spring-Cloud - Infrastructure and Configuration - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-15T19:00:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Biju Kunjummen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Biju Kunjummen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html\"},\"author\":{\"name\":\"Biju Kunjummen\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/802eedfe6f17c3c13fa656af46b6b0e5\"},\"headline\":\"Learning Spring-Cloud &#8211; Infrastructure and Configuration\",\"datePublished\":\"2015-06-15T19:00:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html\"},\"wordCount\":623,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"keywords\":[\"Cloud\",\"Spring\",\"Spring Cloud\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html\",\"name\":\"Learning Spring-Cloud - Infrastructure and Configuration - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"datePublished\":\"2015-06-15T19:00:28+00:00\",\"description\":\"I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/spring-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"spring-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2015\\\/06\\\/learning-spring-cloud-infrastructure-and-configuration.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Learning Spring-Cloud &#8211; Infrastructure and Configuration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/802eedfe6f17c3c13fa656af46b6b0e5\",\"name\":\"Biju Kunjummen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g\",\"caption\":\"Biju Kunjummen\"},\"sameAs\":[\"http:\\\/\\\/biju-allandsundry.blogspot.com\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Biju-Kunjummen\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Learning Spring-Cloud - Infrastructure and Configuration - Java Code Geeks","description":"I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html","og_locale":"en_US","og_type":"article","og_title":"Learning Spring-Cloud - Infrastructure and Configuration - Java Code Geeks","og_description":"I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different","og_url":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2015-06-15T19:00:28+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","type":"image\/jpeg"}],"author":"Biju Kunjummen","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Biju Kunjummen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html"},"author":{"name":"Biju Kunjummen","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/802eedfe6f17c3c13fa656af46b6b0e5"},"headline":"Learning Spring-Cloud &#8211; Infrastructure and Configuration","datePublished":"2015-06-15T19:00:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html"},"wordCount":623,"commentCount":4,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","keywords":["Cloud","Spring","Spring Cloud"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html","url":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html","name":"Learning Spring-Cloud - Infrastructure and Configuration - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","datePublished":"2015-06-15T19:00:28+00:00","description":"I got a chance to play with Spring-Cloud to create a sample set of cloud ready microservices and I am very impressed by how Spring-Cloud enables different","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/spring-logo.jpg","width":150,"height":150,"caption":"spring-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2015\/06\/learning-spring-cloud-infrastructure-and-configuration.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Learning Spring-Cloud &#8211; Infrastructure and Configuration"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/802eedfe6f17c3c13fa656af46b6b0e5","name":"Biju Kunjummen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/66af1504c76f011746c89812efce168850f07dce91ce881e62795e10c99d30b3?s=96&d=mm&r=g","caption":"Biju Kunjummen"},"sameAs":["http:\/\/biju-allandsundry.blogspot.com"],"url":"https:\/\/www.javacodegeeks.com\/author\/Biju-Kunjummen"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/40877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/236"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=40877"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/40877\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/240"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=40877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=40877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=40877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}