ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Spring Boot、Spring Cloud实现原理

2026/8/22 12:04:40 拓冰建站 浏览量
Spring Boot、Spring Cloud实现原理 SpringSrping Boot Srping Cloud三者的出现时间极其发展关系Spring - Srping Boot - Srping Cloud下面我们浅析一下三者的发展历程及其原理。Spring什么是springSpring框架是Java平台上的一种开源应用框架提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制但其在Java应用中的频繁使用让它备受青睐以至于后来让它作为EJBEnterpriseJavaBeans模型的补充甚至是替补。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的特点控制反转IOCSpring框架具有控制反转IOC特性IOC旨在方便项目维护和测试它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期容器可以通过扫描XML文件或类上特定Java注解来配置对象开发者可以通过依赖查找或依赖注入来获得对象。切面编程AOPSpring框架具有面向切面编程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 BootSpring 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服务器TomcatJetty然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作更加专注于业务逻辑。Spring Boot核心原理1. 快速整合第三方框架原理:Maven继承依赖关系又通过starter和依赖管理解决依赖问题。2. 基于SpringMVC无配置文件纯Java完全注解化内置tomcat-embed-core实现Spring Boot框架通过自动配置解决配置复杂问题。3. 通过内嵌web容器由应用启动tomcat而不是tomcat启动应用来解决部署运行问题。Spring Cloud官网截图什么是Spring CloudSpring 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 的优点和缺点优点服务拆分粒度更细有利于资源重复利用有利于提高开发效率可以更精准的制定优化服务方案提高系统的可维护性微服务架构采用去中心化思想服务之间采用Restful等轻量级通讯比ESB更轻量适于互联网时代产品迭代周期更短缺点微服务过多治理成本高不利于维护系统分布式系统开发的成本高容错分布式事务等对团队挑战大两者对比官网截图由上图可知Spring Cloud依赖于Spring Boot。一脉相承却不是同一回事。Spring Boot和Spring Cloud的关系与区别Spring Boot专注于快速方便的开发单个个体微服务。Spring Cloud是关注全局的微服务协调整理治理框架它将Spring Boot开发的一个个单体微服务整合并管理起来为各个服务之间提供配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、精选决策、分布式会话等集成服务。Spring Boot只是一个快速开发框架使用注解简化了xml配置内置了Servlet容器以Java应用程序进行执行。Spring Boot可以离开Spring Cloud独立开发项目但是Spring Cloud离不开Spring Boot属于依赖关系。现实中不大的项目使用Spring Cloud只会徒增开发成本所以在项目前期一般都是使用Spring Boot更有效率快捷。Spring Boot是微服务框架吗1、Spring Boot只是一个快速开发框架算不上微服务框架。2、Spring CloudSpring Boot 实现微服务开发。具体的来说是Spring Cloud具备微服务开发的核心技术RPC远程调用技术Spring Boot的web组件默认集成了SpringMVC可以实现HTTPJSON的轻量级传输编写微服务接口所以Spring Cloud依赖Spring Boot框架实现微服务开发。