SpringBoot基础
# SpringBoot特性
SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用;大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术
- 特性:
- 快速创建独立 Spring 应用
- 直接嵌入Tomcat、Jetty or Undertow
- 提供可选的 starter,简化应用整合
- 按需自动配置 Spring 以及 第三方库
- 提供生产级特性:如 监控指标、健康检查、外部化配置等
- 无代码生成、无xml; 都是基于自动配置技术
- 总结:
- 简化开发,简化配置,简化整合,简化部署,简化监控,简化运维
# 场景启动器
场景启动器(Starter) 就是一个 依赖管理包,它把某个“功能场景”所需的依赖都打包好了。
👉 你只要引入一个 starter,就能一键集成某个功能,而不用自己手动去找一堆依赖。
比如:
- spring-boot-starter-web → 包含了 Spring MVC + Jackson + Tomcat
- spring-boot-starter-data-jpa → 包含了 Spring Data JPA + Hibernate + 数据库驱动依赖
- spring-boot-starter-security → 包含了 Spring Security 所需的依赖
Starter的作用
简化依赖管理 不用你自己一个个找依赖,直接引 starter 就好。
和自动配置联动 Starter 只负责引入依赖,真正帮你“配好”的是 spring-boot-autoconfigure 模块里的自动配置类。
- 比如你引入 spring-boot-starter-web → 自动生效 WebMvcAutoConfiguration
- 引入 spring-boot-starter-data-jpa → 自动生效 JpaRepositoriesAutoConfiguration
约定优于配置 Starter 帮你选择合适的默认库和版本,你直接用默认配置就能跑。
特点:
- 每一个start都是一种场景。
- 导入相关的场景(导入每个场景的所有依赖),拥有相关的功能。
- 每个场景都有一个基础依赖 spring-boot-start
默认支持的所有场景: https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters
- 官方提供的场景:命名为:spring-boot-starter-*
- 第三方提供场景:命名为:*-spring-boot-starter
# 依赖管理
# 定义
Spring Boot提供了一个统一的依赖管理机制,帮你“管版本”,避免冲突。
Spring Boot的依赖管理 就是通过父POM(starter-parent) 或spring-boot-dependencies 来统一管理版本,让你:
- 不写版本号
- 避免冲突
- 开箱即用
# 依赖管理的核心

Spring Boot使用一个 “父项目”(Parent POM):
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.0</version> <!-- 你的 Spring Boot 版本 -->
</parent>
2
3
4
5
它里面定义了:
- 依赖版本管理(Dependency Management): 比如规定 Spring Framework 用 6.x、Jackson 用 2.17.x 等
- 插件管理(Plugin Management): 比如打包插件 spring-boot-maven-plugin
- 默认配置:编码 UTF-8、Java 编译版本、资源过滤规则等
# Spring Boot 依赖管理的两种方式
- 继承父POM(常见)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.0</version>
</parent>
2
3
4
5
- 导入依赖管理(不想用父POM时)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.3.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2
3
4
5
6
7
8
9
10
11
👉 这种方式适合企业大项目,需要自定义父POM的时候。
# 依赖管理的好处
- 不用手动指定版本 例如 spring-boot-starter-data-jdbc,你只写:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
2
3
4
不需要写
- 统一兼容性 Spring Boot 保证所有依赖版本能一起正常工作。
# 自定义依赖版本
哪些需要写版本号?父不管的都需要写版本
- version精确声明版本
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
2
3
4
5
- 子覆盖父的同名属性设置 mysql.version
<properties>
<mysql.version>8.0.33</mysql.version>
<properties>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>${mysql.version}$</version>
</dependency>
2
3
4
5
6
7
8
9
为什么导入依赖不需要写版本号? maven父子继承,父项目可以锁定版本
哪些需要写版本号? 父不管的都需要写版本
如何修改默认版本号?
- version 精确声明版本
- 子覆盖父的同名属性设置mysql.version