深入解读SpringBoot是什么?它到底有什么用?

2023-11-05

现在Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下。

SpringBoot相关的教程,我是跟着动力节点王鹤老师讲的springboot,视频是从细节入手,每个事例先讲解pom.xml中的重要依赖, 其次application配置文件,最后是代码实现。让你知其所以, 逐步让掌握SpringBoot框架的自动配置,starter起步依赖等特性。

相关视频资源:

https://www.bilibili.com/video/BV1XQ4y1m7ex

Spring Boot 的背景

了解 Spring Boot 必须先说说 Spring 框架!

在 Java 后端框架繁荣的今天,Spring 框架无疑是最最火热,也是必不可少的开源框架,更是稳坐 Java 后端框架的龙头老大。

用过 Spring 框架的都知道 Spring 能流行是因为它的两把利器:IOC 和 AOP,IOC 可以帮助我们管理对象的依赖关系,极大减少对象的耦合性,而 AOP 的切面编程功能可以更方面的使用动态代理来实现各种动态方法功能(如事务、缓存、日志等)。

而要集成 Spring 框架,必须要用到 XML 配置文件,或者注解式的 Java 代码配置。无论是使用 XML 或者代码配置方式,都需要对相关组件的配置有足够的了解,然后再编写大量冗长的配置代码。

然后又有多少开发人员能精通这些配置呢?如果我们只提供一些配置参数让框架能自动配置这些组件,那是不是 so easy?

基于简化 Spring 快速上手为目的,Spring Boot 框架诞生了!

什么是 Spring Boot?

Spring Boot是 Spring 开源组织下的一个子项目,也是 Spring 组件一站式解决方案,主要是为了简化使用 Spring 框架的难度,简省繁重的配置。

Spring Boot提供了各种组件的启动器(starters),开发者只要能配置好对应组件参数,Spring Boot 就会自动配置,让开发者能快速搭建依赖于 Spring 组件的 Java 项目。

Spring Boot不但能创建传统的 war 包应用,还能创建独立的不依赖于任何外部容器(如:tomcat)的独立应用,使用 java -jar 命令就能启动。同时,Spring Boot也提供了一个命令行工具来执行 Spring 的脚本。

Spring Boot 的官方网站:

https://projects.spring.io/spring-boot/

Spring Boot 的源码:

https://github.com/spring-projects/spring-boot

Spring Boot 的设计目标

如果你不清楚 Spring 是干嘛用的,那再来看看设计它的目标和初衷是什么!

  • 为 Spring 应用开发提供一个更快、更容易上手的入门体验;
  • 提供一系列在大型项目中经常用到的公共的非功能性特性,如:内嵌入服务器、安全、度量指标、健康检测、外部化配置;
  • 零代码配置生成及零 XML 配置;

Spring Boot 为什么能这么火?

Spring Boot 为什么能这么火?是因为它有以下几个特色。

1、独立运行

Spring Boot内嵌了各种 Servlet 容器,Tomcat、Jetty等,现在不再需要打成 war 包部署到容器中,Spring Boot 只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个 jar 包内。

2、简化 Maven 配置

现在只要依赖 spring-boot-starter-web 启动器包,它包含所有 web 开发所有的依赖,就能拥有 Spring Web 的能力,极大简少了 maven 对依赖的配置。

使用 Maven 命令:mvn dependency:tree 也可以看到完整的依赖树:

  • [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
  • [INFO] | +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
  • [INFO] | | +- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile
  • [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:2.0.1.RELEASE:compile
  • [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.1.RELEASE:compile
  • [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.2.3:compile
  • [INFO] | | | | \- ch.qos.logback:logback-core:jar:1.2.3:compile
  • [INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile
  • [INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.10.0:compile
  • [INFO] | | | \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
  • [INFO] | | +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
  • [INFO] | | \- org.yaml:snakeyaml:jar:1.19:runtime
  • [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
  • [INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile
  • [INFO] | | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile
  • [INFO] | | | \- com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile
  • [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile
  • [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
  • [INFO] | | \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile
  • [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.0.1.RELEASE:compile
  • [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.29:compile
  • [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.29:compile
  • [INFO] | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.29:compile
  • [INFO] | +- org.hibernate.validator:hibernate-validator:jar:6.0.9.Final:compile
  • [INFO] | | +- javax.validation:validation-api:jar:2.0.1.Final:compile
  • [INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.2.Final:compile
  • [INFO] | | \- com.fasterxml:classmate:jar:1.3.4:compile
  • [INFO] | +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
  • [INFO] | | \- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
  • [INFO] | \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
  • [INFO] | +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
  • [INFO] | +- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
  • [INFO] | \- org.springframework:spring-expression:jar:5.0.5.RELEASE:compile

3、自动配置

Spring Boot能根据当前类路径下的类或者 jar 包里面来的类来自动配置 Spring Bean,如添加一个 spring-boot-starter-web 启动器就能拥有 web 的功能,无需其他配置。也可以在配置文件中添加相关配置来自定义装配,这个后面的课程会讲到,请关注后续内容。

4、无代码生成和XML配置

Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是 Spring 4+ 的核心功能之一。

5、应用监控

Spring Boot提供一系列端点可以监控服务及应用,能对Spring 应用做健康检测。

Spring Boot 的缺点

说了这么多 Spring Boot 的优点和特色,虽然上手很容易,但也不是没有缺点。任何框架都有其优缺点,Spring Boot 也不例外,我大概可以总结有以下几个缺点。

1、需要非常了解 Spring Boot 的核心技术原理,不然一旦遇到问题就很棘手。因为什么东西都集成了,自动配置化。这样,需要对配置信息非常熟悉,要找起问题来不是很容易。

2、从原始 Spring 项目很难平滑迁移至 Spring Boot 框架上来,因为有些历史老旧的 XML 配置无法通过 Java 来配置,还需要额外的 XML 文件就不是很完美。再比如,之前是独立的 Tomcat,什么参数都在线上配置好了,你改为内置的 Tomcat 就会遇到很多问题。

相对于优点来说,这些缺点也都不算什么。总之,Spring Boot 是值得我们任何一个 Java 开发者尝试摸索的。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入解读SpringBoot是什么?它到底有什么用? 的相关文章

随机推荐

  • 天龙八部网单服务器修改爆率,【天龙八部3】网单一键安装服务端+GM工具+GM刷装备+视频教程 电脑单机版游戏...

    天龙八部3 网单一键安装服务端 GM工具 GM刷装备 视频教程 电脑单机版游戏 资源介绍 支持系统 WINXP WIN7 WIN8 WIN10 32 64位 支持网络 单机 次更新后为正常开出宝宝 繁殖为单人繁殖 修改宝宝为打满12技能 还
  • 基于yolov5的火焰识别

    基于yolov5的火焰识别 1 准备工作 yolov5项目下载 下载yolov5项目代码 其链接为 yolov5项目地址 并且在PC机上配置环境 即正常按照requirements安装依赖包 而后根据自身需要下载相应的权重文件 yolov5
  • 如何查看和修改Windows远程桌面端口

    如何查看和修改Windows远程桌面端口 一 查看Windows远程桌面端口 1 查看远程桌面服务TermService进程PID 选择 开始 gt 运行 输入 cmd 打开命令行窗口 执行 tasklist svc find Ter 如果
  • ununtu HI3559A学习笔记

    刚装上ubuntu18 04没有为wifi适配器 原因 没有驱动 网卡mediatek mt7630e 解决 来源 https blog csdn net zw chen article details 78355047 内容 Mediat
  • 全面了解一致性哈希算法及PHP代码实现

    在设计一个分布式系统的架构时 为了提高系统的负载能力 需要把不同的数据分发到不同的服务节点上 因此这里就需要一种分发的机制 其实就是一种算法 来实现这种功能 这里我们就用到了Consistent Hashing算法 在正式介绍Consist
  • 开发者,为什么需要构建知识图谱

    作者简介 安晓辉 10多年开发经验 曾任软件开发工程师 项目经理 研发经理 技术总监等岗位 著有 Qt Quick核心编程 Qt on Android核心编程 你好哇 程序员 等书籍 斜杠青年 技术专家 职业规划师 图书作者 在行西安首批行
  • Set集合转为List集合常见的方式

    将 Set 转为 List 可以有多种方法 以下是两种常见的实现方式 使用构造方法 可以使用 List 的构造方法 ArrayList Collection
  • 使用matlab通过遗传算法实现多元函数极值计算

    这里是对一个二元函数求解极大值问题 如果你希望求解更多元函数 需要添加额外的基因 例如z 在pop数组中添加第三列 染色体的第三列基因 设置新的评判标准函数 fitness 如果你希望提高运算精度 可以尝试增大种群规模 优秀基因出现概率更高
  • flowable(四) - 使用flowable-modeler-ui 定义流程

    步骤 地址 Flowable Modeler http localhost 8080 flowable modeler Flowable Task http localhost 8080 flowable task Flowable Adm
  • 使用Pytorch DataLoader快捷封装训练数据、测试数据的X与Y

    DataSet的用法可以参考 pytorch 构造读取数据的工具类 Dataset 与 DataLoader pytorch Data学习一 DataLoader的封装方法可以参考 Pytorch DataLoader一次性封装多种数据集
  • 在pycharm中升级pip失败和pip安装pytorch torchvision opencv

    pytorch官网 https pytorch org get started locally 查看版本 pip version pip 20 2 3 from c users 14172 pycharmprojects pythonpro
  • ping命令知识详解

    1 Ping的基础知识 Ping 是一个十分好用的TCP IP工具 功能 用来检测网络的连通情况和分析网络速度 2 Ping命令详解 参数意思和使用 t Ping指定的计算机直到中断 a 将地址解析为计算机名 n count 发送 coun
  • Spring--Bean相关

    你对Spring中的bean了解吗 都有哪些作用域 Scope Spring 官方文档对 bean 的解释是 In Spring the objects that form the backbone of your application
  • html2canvas生成图片底部出现白边儿的解决方法

    场景 使用html2canvas的时候 生成的图片底部出现了白边 产生白边原因 可能是由于像素渲染问题导致的 移动设备的屏幕像素密度 Pixel Density 较高 有时会导致在两个相邻元素之间出现细小的间隙或白线 解决方法 将canva
  • 解决 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES) 问题

    解决 ERROR 1045 28000 Access denied for user root localhost using password YES 问题 最近新装好的mysql在进入mysql工具时 总是有错误提示 mysql u r
  • [leetcode 周赛 150] 1161 最大层内元素和

    目录 1161 Maximum Level Sum of a Binary Tree 最大层内元素和 描述 思路 代码实现 1161 Maximum Level Sum of a Binary Tree 最大层内元素和 描述 给你一个二叉树
  • 网络编程(详)

    一 概述 计算机网络 是指将地理位置不同的具有 独立功能的多台计算机及其外部设备 通过通信线路连接起来 在网络操作系统 网络管理软件及网络通信协议的管理和协调下 实现资源共享和信息传递的计算机系统 网络编程 在网络通信协议下 实现网络互连的
  • MATLAB—GUI新手入门教程

    GUI界面基本操作 1 GUI界面介绍 2 各个控件的使用方法 2 1 1 按钮 2 1 2 滑动条 2 1 3 文本框 2 1 4 单选框和复选框和切换按钮 2 1 5 弹出式菜单和列表框 2 1 6 按钮组 2 1 7 菜单编辑器 常见
  • 基于Xml方式Bean的配置-beanName个别名配置

    SpringBean配置详解 Bean的基础配置 例如前文涉及到的配置文件
  • 深入解读SpringBoot是什么?它到底有什么用?

    现在Spring Boot 非常火 各种技术文章 各种付费教程 多如牛毛 可能还有些不知道 Spring Boot 的 那它到底是什么呢 有什么用 今天给大家详细介绍一下 SpringBoot相关的教程 我是跟着动力节点王鹤老师讲的spri