Spring Boot、Spring Cloud实现原理
2026/8/22 12:04:31 网站建设 项目流程

Spring,Srping Boot ,Srping Cloud三者的出现时间极其发展关系

Spring -> Srping Boot -> Srping Cloud

下面我们浅析一下三者的发展历程及其原理。

Spring

什么是spring

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。

Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。

Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

spring的特点

控制反转(IOC)

Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。

切面编程(AOP)

Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。

Spring Boot

为什么会出现Spring Boot

以启动一个带Hibernate的Spring MVC为例。

1. 依赖太多了,而且要注意版本兼容。这个应用,要添加10-20个依赖,Spring相关的包10多个,然后是Hibernate包,Spring与Hibernate整合包,日志包,json包一堆,而且要注意版本兼容性。

2. 配置太多了,要配置注解驱动,要配置数据库连接池,要配置Hibernate,要配置事务管理器,要配置Spring MVC的资源映射,要在web.xml中配置启动Spring和Spring MVC等

3.部署和运行麻烦。要部署到tomcat里面。不能直接用java命令运行。

从搭建好项目到启动环境,到解决各种问题,很多时间久这样被浪费了,搭建过老项目的老江湖都知道这种痛苦,费时费事费心,有时候一个版本兼容的问题都要解决好久。

而此时Spring Boot应运而生。Spring Boot的哲学就是约定大于配置和开箱即用。减少了大量配置,兼容性,部署,运行等麻烦,降低程序员开发成本。

什么是Spring Boot

Spring Boot是 Spring 的一套快速配置脚手架,Spring Boot,看名字就知道是Spring的引导,就是用于整合Spring的,使得Spring的学习和使用变得快速轻松。不仅适合替换原有的工程结构,更适合微服务开发。最终以Java应用程序进行执行。基于Spring Boot可以快速开发单个微服务,Spring Boot专注于快速、方便集成的单个个体,Spring Boot使用了约定大于配置和开箱即用的理念。

Spring Boot 的特点

约定大于配置:

Convention over configuration,是一种由Spring Boot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。将Spring和目前使用比较多的技术框架集成配置打包,省了使用者在开发时自己去配置集成,帮程序员做了很多集成方案,能不配置就不配置。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

开箱即用:

Outofbox,是指在开发过程中,通过用MAVEN依赖的继承方式,帮助我们快速整合第三方常用框架,完全采用注解化(使用注解方式启动SpringMVC),简化XML配置,内置HTTP服务器(Tomcat,Jetty),然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。

Spring Boot核心原理

1. 快速整合第三方框架原理:Maven继承依赖关系,又通过starter和依赖管理解决依赖问题。

2. 基于SpringMVC无配置文件(纯Java)完全注解化+内置tomcat-embed-core实现Spring Boot框架,通过自动配置,解决配置复杂问题。

3. 通过内嵌web容器,由应用启动tomcat,而不是tomcat启动应用,来解决部署运行问题。

Spring Cloud

官网截图:

什么是Spring Cloud

Spring Cloud是一套目前完整的微服务框架,关注全局的微服务协调整理治理框架,它是一系列框架的有序集合。它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud虽然带有‘cloud’,但是它并不是云计算解决方案,而是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。

Spring Cloud 的特点

约定优于配置:

适用于各种环境,开发、部署在PC Server或各种云环境均可,隐藏了组件的复杂性,并提供声明式、无xml的配置方式

开箱即用,快速启动:

组件丰富,功能齐全,且组件轻量级:

Spring Cloud为微服务架构提供了非常完整的支持。例如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。其整合的组件大多比较轻量。

选型中立、丰富、灵活:

Spring Cloud的组成部分是解耦的,开发人员可按需灵活挑选技术选型

Spring Cloud 的优点和缺点

优点

  1. 服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率

  1. 可以更精准的制定优化服务方案,提高系统的可维护性

  1. 微服务架构采用去中心化思想,服务之间采用Restful等轻量级通讯,比ESB更轻量

  1. 适于互联网时代,产品迭代周期更短

缺点

  1. 微服务过多,治理成本高,不利于维护系统

  1. 分布式系统开发的成本高(容错,分布式事务等)对团队挑战大

两者对比:

官网截图

由上图可知:Spring Cloud依赖于Spring Boot。一脉相承,却不是同一回事。

Spring Boot和Spring Cloud的关系与区别

  1. Spring Boot专注于快速方便的开发单个个体微服务。Spring Cloud是关注全局的微服务协调整理治理框架,它将Spring Boot开发的一个个单体微服务整合并管理起来,为各个服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、精选决策、分布式会话等集成服务。

  1. Spring Boot只是一个快速开发框架,使用注解简化了xml配置,内置了Servlet容器,以Java应用程序进行执行。Spring Boot可以离开Spring Cloud独立开发项目,但是Spring Cloud离不开Spring Boot,属于依赖关系。

  1. 现实中不大的项目使用Spring Cloud只会徒增开发成本,所以在项目前期一般都是使用Spring Boot,更有效率,快捷。

Spring Boot是微服务框架吗?

1、Spring Boot只是一个快速开发框架,算不上微服务框架。

2、Spring Cloud+Spring Boot 实现微服务开发。具体的来说是,Spring Cloud具备微服务开发的核心技术:RPC远程调用技术;Spring Boot的web组件默认集成了SpringMVC,可以实现HTTP+JSON的轻量级传输,编写微服务接口,所以Spring Cloud依赖Spring Boot框架实现微服务开发。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询