详解Spring、SpringBoot、SpringCloud三者的联系与区别

简介: 详解Spring、SpringBoot、SpringCloud三者的联系与区别

一、Spring

Spring 是一个轻量级的Java 开发框架,主要依存于SSM 框架,即Spring MVC + Spring + Mybatis,定位很明确,Spring MVC主要负责view 层的显示,Spring 利用IOC 和AOP 来处理业务,Mybatis则是数据的持久化到数据库。


46.png


而Spring 为了开发Java 应用程序提供了全面的基础架构支持。 它具有以下几个特点。


非侵入式

所谓非侵入式是指Spring 框架的API 不会出现在业务逻辑上,也就是说业务逻辑应该是干净的,不会出现与业务逻辑无关的程序。 针对应用而言,这样才能将业务逻辑从目前应用中剥离出来,进一步在其他的应用中实现重用; 针对框架而言,由于业务逻辑中没有Spring 的API,所以业务逻辑也可以从Spring 框架快速移植到其他框架。


容器

Spring 提供了容器功能,容器可以管理对象的生命周期以及对象与对象之间的依赖关系,可以写一个配置文件定义对象的名称、是否单例以及设定与其他物件的依赖关系,当容器启动后,这些物件就被建立好实体了,可以直接注入使用。


IOC 控制反转

控制反转是一种编程的方式,即依赖关系的转移,如果以前都是依赖于实现,那么现在反转为依赖于抽象,核心思想就在于面对界面编程。


依赖注入

对象与对象之间依赖关系的实现,包括接口注入,建构注入等。


AOP 剖面编程

将记录文件、安全、交易管理等功能想象成一个剖面,原先这些功能都是直接写在业务逻辑中,但它有两个缺点,首先就是业务逻辑不干净,其次就是这些功能被很多业务逻辑重复使用,不能做到重用。 AOP 就解决了上述问题,可以把这些功能从业务逻辑中拨离出来形成一个剖面,可以实现重用。


二、Spring Boot

设计目的

Spring Boot 的设计目的是为了解决 Spring 各版本设定工作过于繁重的问题,简化初始架设流程、降低开发难度,使开发人员只需要专注在应用程序的开发,而无须过多关注 XML 的配置。


设计理念

Spring Boot 的设计理念为约定大于配置(Convention Over Configuration),为此提供了很多已经整合好的依赖套件,以便开发人员在开发应用程序时能做到不用或者很少的Spring 配置就可以让项目快速执行,这样的好处就是开发人员可以把更多的精力放在业务逻辑的开发上。


优点


使用简单

Spring Boot 可使用注释的方式实现类别的定义与功能的开发,即可无程序产生和 XML 设置。 而且Spring Boot 会根据类别路径中的JAR 包,为JAR 包中的类别自动配置Bean,这样可以大量减少我们要使用的配置,当然Spring Boot 只考虑大部分开发状况,若实际开发中我们需要配置Bean 也可以自定义配置。


配置简单

Spring Boot 为了简化Maven 配置设定提供了大量的Starter,开发人员只要能配置好相对应组件参数,Spring Boot 就会自动配置,让开发人员能快速搭建依赖于Spring 组件的Java 项目,例如,Spring Boot 为了帮助开发人员快速启动一个web 容器, 提供了spring-boot-starter-web 依赖,只需要在pom.xml 档案中新增web 依赖即可。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

而点选进入web 依赖后可以发现,spring-boot-starter-web 已经包含了多个依赖,包括在Spring 中需要汇入的依赖,如下图展示一部分依赖。

<!-- 忽略其他依賴 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.0.7.RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.7.RELEASE</version>
    <scope>compile</scope>
</dependency>

部署简单

Spring Boot 内嵌了各种Servlet 容器、Tomcat、Jetty 等,不再需要打包成war 包部署到容器中,我们只需要将项目打包成Jar 包,所有的依赖包都在一个Jar 包内,使用java -jar xxx.jar 即可启动项目。


监控简单

Spring Boot 提供了spring-boot-starter-actuator 依赖,它是一套监控、管理应用程序状态的功能模块,包含监控应用程序的线程信息、内存信息等。


缺点

虽然Spring Boot 上手很容易,大部分东西都自动配置,简化了许多架设流程,但也因此需要非常了解Spring Boot 的核心技术原理,需要对配置信息非常熟悉,不然一旦遇到问题就很棘手,要找问题也不是很容易。


三、Spring Cloud

Spring Cloud 是基于 Spring Boot 的一整套实现微服务的框架,它是一套分布式服务治理架构,本身不提供实际功能性的操作,只专注于服务之间的通讯、熔断和监控等,因此需要很多原件来共同支持一套功能。


四、三者的关系

从上述介绍可以看出,Spring Boot 其实是依赖于Spring 的,并不是一个全新的架构,Spring Boot 就是 Spring 的自动化,而 Spring Cloud 通过依赖 Spring Boot 来置微服务应用。

相关文章
|
4月前
|
前端开发 Java 应用服务中间件
《深入理解Spring》 Spring Boot——约定优于配置的革命者
Spring Boot基于“约定优于配置”理念,通过自动配置、起步依赖、嵌入式容器和Actuator四大特性,简化Spring应用的开发与部署,提升效率,降低门槛,成为现代Java开发的事实标准。
|
4月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
4月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
541 2
|
5月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
4369 2
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
存储 JSON Java
693 0
|
5月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
1879 0
|
4月前
|
JavaScript 安全 Java
基于springboot的大学生兼职系统
本课题针对大学生兼职信息不对称、权益难保障等问题,研究基于Spring Boot、Vue、MySQL等技术的兼职系统,旨在构建安全、高效、功能完善的平台,提升大学生就业竞争力与兼职质量。
|
4月前
|
监控 安全 JavaScript
2025基于springboot的校车预定全流程管理系统
针对传统校车管理效率低、信息不透明等问题,本研究设计并实现了一套校车预定全流程管理系统。系统采用Spring Boot、Java、Vue和MySQL等技术,实现校车信息管理、在线预定、实时监控等功能,提升学校管理效率,保障学生出行安全,推动教育信息化发展。
|
4月前
|
JavaScript Java 关系型数据库
基于springboot的美食城服务管理系统
本系统基于Spring Boot、Java、Vue和MySQL技术,构建集消费者服务、商家管理与后台监管于一体的美食城综合管理平台,提升运营效率与用户体验。

热门文章

最新文章