spring boot简介
spring boot 是提供的基于 Spring 框架的快速开发脚手架。核心目标是:让开发者用最少的配置,
最快地搭建和运行一个独立的、生产级别的 Spring 应用。
如果用一句话概括:Spring Boot 不是取代 Spring 的新框架,而是让 Spring 更好用、更易上手
的"加速包"。
为了让你更直观地理解,我们可以从以下几个方面来了解它:
1. 为什么要有 Spring Boot?(痛点对比)
- 以前的 Spring 时代:开发者需要写大量的 XML 配置文件,还要手动管理各种依赖的版本,配置 Tomcat 等服务器进行部署,被称为"配置地狱"。
- Spring Boot 时代:奉行"约定优于配置",提供了默认的配置,开发者引入依赖后几乎零配置就能跑起来,内置了服务器,直接一键启动。
2. Spring Boot 的四大核心特性
- 自动配置:这是 Spring Boot 的"魔法"。当你引入了某个依赖(比如 MySQL 驱动),Spring Boot 会自动帮你配置好连接数据库所需的 Bean,无需你再写 XML 或 Java 配置类。如果不合适,你随时可以覆盖默认配置。
- 起步依赖 :它把常用的依赖按功能打包成了"Starter"。比如你想做 Web 开发,只需引入
spring-boot-starter-web,它就会自动帮你引入 Spring MVC、Tomcat、JSON 解析等所有相关依赖,再也不用为依赖版本冲突发愁。 - 内嵌服务器 :Spring Boot 内置了 Tomcat、Jetty 或 Undertow 等服务器。你的应用最终会打成一个可执行的 JAR 包,直接通过
java -jar命令就能运行,不需要再额外安装和部署应用服务器。 - 生产级监控:自带应用的监控模块,可以随时查看系统运行状态、内存使用、线程池情况、各种配置信息等,非常适合微服务和云原生环境
3. 一个通俗的比喻
- 传统 Spring:就像买零件自己组装汽车。你需要自己找发动机(服务器)、自己接线(配置XML)、自己调试,虽然灵活但非常耗时。
- Spring Boot:就像直接买了一辆出厂就能开的新车。发动机、线路全给你装好了,钥匙一拧就能跑(开箱即用)。如果你想改装(自定义配置),也完全没问题。
4. Spring Boot 的优点总结
- 开发极快:极大地减少了模板代码和配置文件。
- 学习成本低:如果你会 Spring,学 Spring Boot 几乎没有门槛。
- 部署方便:打包成一个 JAR 包,非常契合 Docker 容器化和微服务架构。
- 生态无敌:与 Spring 生态无缝衔接,Spring Cloud(微服务)、Spring Security(安全)等都能轻松整合。
Maven
Maven是一个项目管理工具,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的项
目管理工具软件。Maven能够简单方便地提高我们的开发效率,减少我们的开发Bug
Maven的作用
Maven提供的功能非常多,但我们主要使用Maven以下两个作用:
- 项目构建
- 管理依赖
创建一个Maven项目
IDEA本身已经集成了Maven, 我们可以直接使用(这里建议idea的社区版本:2021.1 -2022.1.4,专
业版无要求)

创建完成后的页面如下

项目构建
当我们开发了一个项目之后,代码需要经过编译, 测试, 打包, 发布等流程,每次代码的修改都需要
经过这些流程,如果代码反复调试修改这个流程就需要反复进行,就显得特别麻烦,而Maven给我
们提供了 一套简单的命令来完成项目的构建.

当点击packet之后,就完成了打包操作,同时也会生成一个target目录

打包就是把所有的class文件全部放在一起,打成jar包或者war包
依赖管理
上面说到,Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar
包获取的jar包,其实就是依赖.
这里的pom.xml 就是maven的配置文件,用以描述项目的各种信息
依赖配置
依赖: 指当前项目运行所需要的jar包.
如果使用Maven, 我们只需要在pom.xml中引入相应的的依赖就可以了
java
<dependencies>
<!--里面放置项目的依赖坐标, 可为多个 -->
</dependencies>
以之前我们学习JDBC为例:
当我们想通过Java来控制数据库时,首先要手动下载mysql-connector-java的包并且添加到项目中
在pom文件标签内, 添加依赖坐标
java
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
点击刷新按钮, 引入新加入的依赖jar包

刷新完之后, 就可以在项目中看到新加入的jar包

依赖传递
依赖主要项目包之间的相互依赖,当A 依赖B, B依赖C, 那么 A项目引入B 的同时, 也需要引入C, 如
果我们手动管理这个依赖,这个过程就会比较麻烦,我们需要知道每个库都依赖哪些库以及这些依
赖之间的版本是如何关联的
使用maven就可以避免管理所需依赖的关系。我们只需要在pom文件中,定义直接依赖就可以了由
于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入
依赖排除
当前阶段我们需要依赖的库并不多,但随着项目的越来越复杂,库之间的依赖关系也会变得越来越
复杂.当项目A不需要Jar B,也可以通过排除依赖的方式来实现
通过exclusions标签来实现
java
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
<exclusions>
<exclusion>
<artifactId>protobuf-java</artifactId>
<groupId>com.google.protobuf</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Maven Help插件
当项目比较复杂时, 我们就会有Jar包冲突的问题, 这时候就需要去解决依赖冲突,解决冲突之前需
要先找到冲突, 我们可以使用Maven Help插件来观察包和包之间的依赖关系
安装图解


由于我的网络原因,这里不好显示,但已经提前安装好了

安装完成之后,可以在点开观察项目之间的依赖关系


Maven 仓库
当我们在pom文件中配置完依赖之后, 点击刷新Maven会根据坐标的配置,去仓库里寻找Jar包,并
下载添加到项目中,这个Jar包下载的地方就称为仓库
仓库:用于存储资源,管理各种jar包
Maven仓库分为两大类: 本地仓库和远程仓库。其中远程仓库又分为中央仓库, 私服和其他公共库
本地仓库
本地仓库是在自己计算机上的创建一个目录(用来存储jar包), 当项目中引入对应依赖jar包后,首
先会查找本地仓库中是否有对应的jar包
- 如果有,则在项目直接引用
- 如果没有,则去中央仓库中下载对应的jar包到本地仓库
中央仓库
中央仓库: maven 软件中内置一个远程仓库地址就是中央仓库,服务于整个互联网。由 Maven团队
维护,全球唯一
仓库地址:Central Repository:
私服
私服: 一般由公司团队搭建的私有仓库。私服属于某个公司或者某个部门。往往需要一定权限
有了私服之后, Maven依赖下载的顺序又发生了变化
当Maven需要下载资源的时候
- 先从本地仓库获取, 本地仓库存在则直接返回
- 如果本地仓库没有就从私服请求, 私服存在该资源就直接返回
- 如果私服上不存在该资源,则从中央仓库下载, 中央仓库不存在就报错了
- 如果中央仓库中存在就先缓存在私服上之后再缓存到本地仓库里, 再为Maven的下载请求提供服务
Spring Boot 项目创建
Idea创建的准备
安装Spring Boot Help插件
查找插件并下载
插件地址: https://plugins.jetbrains.com/plugin/18622-spring-boot-helper/versions
建议下载版本:2021.1-2022.1.4
安装插件

从下载的文件地址安装到idea上即可
安装好之后,它的名字就变成了 Spring Initializr and Assistant,如下图所示∶

创建SpringBoot项目
接下来我们来创建 Spring Boot 项目


项目名称和项目描述必须填


创建完成左侧会出现如下图所示的一系列图标

项目代码和目录介绍
项目代码
观察pom文件

社区版存在一个bug,需要将release版本删除再点击maven刷新
此时不会再报错

pom.xml文件里的具体信息, 不需要过度关注, 我们主要看标签里面的内容
pom文件中,引入了两个依赖
- spring-boot-starter-web:包含了web应用开发所需要的常见依赖
- spring-boot-starter-test:包含了单元测试所需要的常见依赖
目录介绍

src/main/resources: 为静态资源或配置文件:
/static:静态资源文件夹, 比如前期学的js, css, html等静态文件, 不需要服务器数据进行绑定的 页面
/templates:模版资源文件夹, 主要存放动态模板文件, 比如JSP, Freemarker, Thymeleaf等需 要服务器动态渲染数据的文件
Spring Boot项目运行
java
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
点击启动类的 main 方法就可以运行 Spring Boot 项目了,启动成功如下图所示

输出 Hello world
java
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("/m1")
public String sayHi(){
return "hello world";
}
}
重新启动项目,访问 http://127.0.0.1:8080/user/m1 最终效果如下:

总结
- Spring Boot 是为了快速开发 Spring 而诞生的,Spring Boot 具备:
- Spring Boot 提供了启动添加依赖的功能, 可以快速集成框架.
- 内置web服务器,无需配置 Tomcat 等 Web服务器,直接运行和部署程序.
- 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发.
- 支持更多的监控的指标,可以更好的了解项目的运行情况等特点.
- Spring Boot 可使用 Idea 或网页创建,它的设计思想是约定大于配置,类上标注
- @SpringBootApplication 就可以启动 Spring Boot 项目了.