irpas技术客

【微服务】Spring 和Spring Boot 和 Spring Cloud 的关系及微服务架构_chenghan_yang

大大的周 2744

1. 前言 Spring 官方文档本文的 Spring 指的是 Spring Framework 5 ,简单介绍其组成,后文将不再展开。 Spring Framework 5 整合了许多功能,其中开发用得最多: Spring Core 提供了的 IOC容器。 Spring MVC 运用MVC编程模式,在IOC容器 的基础上为了支持Web开发,提供了 许多注解和Api。需要充分了解了maven或gradle 才可以更好得了解Spring Boot (可运行jar包和依赖外部tomcat环境的不同)文章按照解决以下疑问的方式进行展开。 为什么有了Spring Framework 5 还需要Spring Boot ?(Spring Boot 的特性) 什么是微服务?Spring Boot 、Spring Cloud 和微服务的关系 ? 2. Spring Boot 的特性

这里的特性指的是,区别于Spring Framework 5 的特性。

2.1 直观表现:内置服务器

比较老的项目SSM 和 SSH 项目都需要Tomcat 等服务器软件为Java Web 程序的的容器。 但是Tomcat是什么什么写的?——Java。既然Spring Framework 与 Tomcat 同根同源,又是实际上开发的标准套件,于是Spring Boot就将两者整合到一起。有了内置的Tomcat java代码及Api,通过Maven 或 Gradle 打包工具,把Spring Boot 打成jar包 (也可以是war这里就不讨论),接着在服务器端执行一行bash既可以启动Web服务。

java -jar test.jar 2.2 内在原理:起步依赖与自动装配 2.2.1 起步依赖 spring-boot-starter-parent

所有Spring Boot 工程必须都有的 spring-boot-starter-parent,这种命名规范的依赖包,就是起步依赖。即是Spring Boot团队考量了兼容性和实用性后提供的标准化启动库。解决了程序员自己搭建框架时各种版本选择问题。

2.2.2 起步依赖 spring-boot-starter-web

如果要用内置的Tomcat等服务器,需要添加spring-boot-starter-web 的起步依赖。 此外,Spring Boot 将Web 开发需要的Tomcat Spring MVC Jackson 都整合到spring-boot-starter-web 依赖中。

2.2.3 更多起步依赖

网友整理的Spring Boot 起步依赖 Maven仓中 Spring Boot 团队整合的更多起步依赖 起步依赖能够自由组合和拼装,需要借助自动装配的特性,后文将讲到

2.2.4 自动装配

实现自动装配的前提是,jar包被统一管理,Spring Boot 约定所有需要被系统注入到bean容器中的类的类路径都放在jar 包的META-INF/spring.factories 中。提供规范后,借助Spring Framework 的装配能力,写死规范的路径,借此完成自动装配 。 由于@SpringBootApplication 复合的 @EnableAutoConfiguration 就能完成自动装配,而spring initializr 生成的工程启动类就带了@SpringBootApplication。

换言之,Spring Boot 的自动装配 = Spring Boot提供的规范 + Spring Framework 的手动装配代码写死在框架中,不涉及架构的开发任务上还用不上这个特性

2.3 去XML配置

引用官网的Features 的一个特点:

Absolutely no code generation and no requirement for XML configuration

当然这里去除的的xml配置只是原来Spring Framework大量使用的bean配置。Maven中的xml配置本质上属于打包工具的使用,与bean配置关系不大。 原来写在bean属性中的数据库配置、端口配置等都可以被yml properties 文件取代,这些文件可以用在Spring Cloud 的规范中。

3. Spring Boot 与 Spring Cloud 的关系 3.1 先给结论 Spring Boot 是开发框架,既可以开发单体服务,也可以开发微服务。Spring Cloud 是一套开发微服务的工具,这些工具让开发者更好得实现自己的微服务架构。这些工具都是由Spring Boot开发的。程序员可以直接使用这些工具,也可以基于工具二次开发,或者基于原理开发。这里抽象为基于Spring Boot 的微服务架构标准关系 Spring Cloud 是 使用 Spring Boot 作为开发框架,为程序员提供了一套微服务的架构标准。程序员使用Spring Cloud提供的工具自己组合成解决方案。各大公司也可以自己基于 Spring Cloud 的规范开发个性化套件并自由组合为自己的Spring Cloud 如 Spring Cloud Alibaba。 Spring Cloud 官方文档 3.2 通俗化解释

Spring Boot 开发框架

Spring Cloud 一套微服务的架构工具(标准)

Spring Cloud Alibaba Alibaba 的微服务解决方案

一句话:阿里巴巴使用基于Spring Boot开发框架,以Spring Cloud微服务架构标准,二次开发并开源了一种微服务解决方案: Spring Cloud Alibaba。

4. 后记

理清了Spring 和 Spring Boot和 Spring Cloud 的关系有利于检索问题时确定关键词。就好像要了解Spring MVC的注解就应该看Spring Framework的官方文档,Spring Boot的文档往往只介绍区别于Spring Framework的特性。同时,自己要搭建一个微服务框架,可以优先去官网查看已有的微服务解决方案。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #微服务Spring #和Spring #Boot # #Spring #Cloud #的关系及微服务架构 #1