想要了解 Spring Cloud 和 Spring Boot 是如何配合使用的,就必须先要了解 Spring Boot 的 Starter 机制。
Spring Boot Starter 是 Spirng Boot 约定优于配置理念的最佳实现。Spring Boot Starter 有两个核心组件:自动配置代码和提供自动配置模块及其它有用的依赖。也就意味着,当项目中引入某个组件的 Starter ,项目启动时就会针对此组件进行默认配置,从而达到“开箱即用”,一般情况下仅需要少量的配置或者不配置即可使用组件对应的功能。
Spring Boot 由众多 Starter 组成,随着版本的推移 Starter 家族成员也与日俱增。在传统 Maven 项目中通常将一些层、组件拆分为模块来管理,以便相互依赖复用,在 Spring Boot 项目中我们则可以创建自定义 Spring Boot Starter 来达成该目的。
Spring Boot 拥有强大的融合社区开源软件的能力。在没有使用 Spring Boot 之前,我们需要按照每个开源软件的特性,将对应的组件包集成到我们的开发项目中,因为每个组件的设计理念和开发团队都不一致,因此会有很多不同的调用风格在我们的项目中。
Spring Boot 整合了主流的开源软件形成了一系列的 Starter,让我们有了一致的编程体验来集成各种软件,Spring Boot 在集成的时候做了大量的优化,让我们在集成的时候往往只需要很少的配置和代码就可以完成。可以说各种 Starters 就是 Spring Boot 最大的优势之一。
因此 Spring Cloud 在构建自己的组件产品时,也充分地吸收了 Spring Boot Starter 的设计理念,每一个 Spring Cloud 组件都包装成 Starter ,在项目需要使用 Spring Cloud 相关组件时,只需要引入对应的 Spring Cloud Starter 即可。
也就是说 Spring Cloud 在构建注册中心时,将 Eureka 、Consul 等框架用 Spring Boot 技术包装成对应的 Starter 组件,微服务体系中的其它产品也是这个思路。 这样 Spring Cloud 就完全将整个体系构建在了 Spring