详解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 来置微服务应用。

相关文章
|
23天前
|
监控 Java 数据库连接
详解Spring Batch:在Spring Boot中实现高效批处理
详解Spring Batch:在Spring Boot中实现高效批处理
121 12
|
23天前
|
安全 Java 测试技术
详解Spring Profiles:在Spring Boot中实现环境配置管理
详解Spring Profiles:在Spring Boot中实现环境配置管理
69 10
|
19天前
|
Java 关系型数据库 数据库
京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
45岁老架构师尼恩分享了Spring事务的核心知识点,包括事务的两种管理方式(编程式和声明式)、@Transactional注解的五大属性(transactionManager、propagation、isolation、timeout、readOnly、rollbackFor)、事务的七种传播行为、事务隔离级别及其与数据库隔离级别的关系,以及Spring事务的10种失效场景。尼恩还强调了面试中如何给出高质量答案,推荐阅读《尼恩Java面试宝典PDF》以提升面试表现。更多技术资料可在公众号【技术自由圈】获取。
|
19天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
62 5
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
99 2
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
177 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
115 62
|
7天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
52 13
|
14天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
80 2
下一篇
DataWorks