--- # The name of your project title: Spring Cloud badges: # Customize your project's badges. Delete any entries that do not apply. custom: - name: Source (GitHub) url: https://github.com/spring-cloud icon: github - name: StackOverflow url: http://stackoverflow.com/questions/tagged/spring-cloud icon: stackoverflow --- {% capture billboard_description %} Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry. {% endcapture %} {% capture main_content %} Spring Cloud builds on Spring Boot by providing a bunch of libraries that enhance the behaviour of an application when added to the classpath. You can take advantage of the basic default behaviour to get started really quickly, and then when you need to, you can configure or extend to create a custom solution. ## Quick Start You can create a Config Server with a single annotation: ```groovy @Configuration @EnableAutoConfiguration @EnableConfigServer class ConfigServer { } ``` This app runs from the Spring Boot CLI (once the `spring-cloud-cli` extensions are installed), e.g. ``` $ spring install org.springframework.cloud:spring-cloud-cli:1.0.0.BUILD-SNAPSHOT $ spring run configserver.groovy -- --server.port=8888 ``` Any other local application that includes `spring-cloud-config` as a dependency will be able to contact this server and pre-initialize the Spring `Environment` with external configuration managed by the server. The Spring Boot CLI (with the Cloud extensions) will do this automatically for all applications. ```groovy @Configuration @EnableAutoConfiguration @Controller class ConfigClient { } ``` Run this app with the Spring Boot CLI and then visit http://localhost:8080/env (the `Environment` endpoint). Notice the property sources that come from the config server at the top of the results. (N.B. does not work if you can't connect to [github.com](https://github.com) because that's where the default configuration repository lives.) ## Features Spring Cloud focuses on providing good out of box experience for typical use cases and extensibility mechanism to cover others. * Distributed/versioned configuration * Service registration and discovery * Routing * Service-to-service calls * Load balancing * Circuit Breakers * Global locks * Leadership election and cluster state * Distributed messaging ## Main Projects {% capture project_description %} Centralized external configuration management backed by a git repository. The configuration resources map directly to Spring `Environment` but could be used by non-Spring applications if desired. {% endcapture %} {% include project_block.md site_url="http://cloud.spring.io/spring-cloud-config" repo_url="http://github.com/spring-cloud/spring-cloud-config" project_title="Spring Cloud Config" project_description=project_description %} {% capture project_description %} Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.). {% endcapture %} {% include project_block.md site_url="http://cloud.spring.io/spring-cloud-netflix" repo_url="http://github.com/spring-cloud/spring-cloud-netflix" project_title="Spring Cloud Netflix" project_description=project_description %} {% capture project_description %} An event bus for linking services and service instances together with distributed messaging. Useful for propagating state changes across a cluster (e.g. config change events). {% endcapture %} {% include project_block.md site_url="http://cloud.spring.io/spring-cloud-bus" repo_url="http://github.com/spring-cloud/spring-cloud-bus" project_title="Spring Cloud Bus" project_description=project_description %} {% capture project_description %} Integrates your application with Pivotal Cloudfoundry. Makes it easy to implement SSO and OAuth2 protected resources, and also to create a Cloudfoundry servive broker. {% endcapture %} {% include project_block.md site_url="/spring-cloud" repo_url="http://github.com/spring-cloud/spring-cloud-cloudfoundry" project_title="Spring Cloud for Cloud Foundry" project_description=project_description %} {% capture project_description %} Makes it easy for PaaS applications in a variety of platforms to connect to backend services like databases and message brokers (the project formerly known as "Spring Cloud"). {% endcapture %} {% capture site_url %} {{ site.projects_site_url }}/spring-cloud-connectors {% endcapture %} {% include project_block.md site_url=site_url repo_url="http://github.com/spring-cloud/spring-cloud-connectors" project_title="Spring Cloud Connectors" project_description=project_description %} {% capture project_description %} Spring Boot-style starter projects to ease dependency management for consumers of Spring Cloud. {% endcapture %} {% include project_block.md site_url="/spring-cloud" repo_url="http://github.com/spring-cloud/spring-cloud-starters" project_title="Spring Cloud Starters" project_description=project_description %} {% capture project_description %} Spring Boot CLI plugin for creating Spring Cloud component applications quickly in Groovy {% endcapture %} {% include project_block.md site_url="/spring-cloud" repo_url="http://github.com/spring-cloud/spring-cloud-cli" project_title="Spring Cloud CLI" project_description=project_description %} {% endcapture %} {% capture related_resources %} ### Sample Projects * [Config Server](https://github.com/spring-cloud-samples/configserver) * [Service Registry](https://github.com/spring-cloud-samples/eureka) * [Circuit Breaker Dashboard](https://github.com/spring-cloud-samples/hystrix-dashboard) * [Business Application](https://github.com/spring-cloud-samples/customers-stores) (Customers and Stores) {% endcapture %} {% include project_page.html %}