Spring Boot 知识体系概览
什么是 Spring Boot?
Spring Boot 是 Spring 团队推出的快速开发框架,核心理念是 "约定优于配置(Convention over Configuration)"——它不是 Spring 的替代品,而是 Spring 的"增强套装",帮你自动完成大量配置工作。
用 Spring 原生框架搭建一个 Web 项目,你需要:配置 web.xml、配置 DispatcherServlet、配置数据源、配置事务管理器、引入各种依赖并处理版本冲突……这些"样板工程"可能要花半天时间。
用 Spring Boot 只需要:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
// 一行代码启动整个应用
SpringApplication.run(Application.class, args);
}
}
Spring Boot 做了三件事让这一切成为可能:
- 自动配置:根据类路径中的依赖自动配置 Bean
- Starter 依赖:一个依赖引入一整套技术栈
- 内嵌服务器:不需要外部 Tomcat,打成 JAR 直接运行
核心知识点
自动配置——"魔法"背后的原理
@SpringBootApplication 是一个组合注解,其中最关键的是 @EnableAutoConfiguration。自动配置的流程:
- Spring Boot 启动时,
AutoConfigurationImportSelector读取META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件 - 该文件列出了所有自动配置类(如
DataSourceAutoConfiguration、RedisAutoConfiguration) - 每个自动配置类上都有 条件注解(
@ConditionalOnClass、@ConditionalOnBean)——只有满足条件才会生效
// 简化示例:只有类路径中有 DataSource.class 和 EmbeddedDatabaseType.class 时才自动配置
@Configuration
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
public class DataSourceAutoConfiguration {
// 自动创建 DataSource Bean
}
Starter——"一站式"依赖管理
Starter 是一组预定义的依赖集合。例如 spring-boot-starter-web 包含了 Spring MVC、内嵌 Tomcat、Jackson(JSON 序列化)等所有 Web 开发需要的依赖,且版本已经过兼容性测试。
| Starter | 包含内容 |
|---|---|
spring-boot-starter-web | Spring MVC + 内嵌 Tomcat + Jackson |
spring-boot-starter-data-jpa | JPA + Hibernate + 连接池 |
spring-boot-starter-data-redis | Redis 客户端 + Lettuce |
spring-boot-starter-test | JUnit 5 + Mockito + AssertJ |
你也可以创建自定义 Starter——封装公司内部的通用功能(如日志 SDK、权限组件),让其他项目一行依赖即可使用。
配置管理——灵活的外部化配置
Spring Boot 支持将配置外部化到 application.yml / application.properties,并支持多环境切换:
# application.yml
server:
port: 8080
spring:
profiles:
active: dev # 激活 dev 配置
---
# application-dev.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/dev_db
---
# application-prod.yml
spring:
datasource:
url: jdbc:mysql://prod-host:3306/prod_db
配置优先级从高到低:命令行参数 > 环境变量 > application-{profile}.yml > application.yml。
Actuator——生产级监控
Spring Boot Actuator 提供了一系列生产级的监控端点:
| 端点 | 功能 |
|---|---|
/actuator/health | 健康检查(数据库、Redis 连接状态) |
/actuator/metrics | 应用指标(JVM 内存、线程数、HTTP 请求数) |
/actuator/info | 应用信息 |
/actuator/env | 环境变量和配置 |
/actuator/loggers | 动态调整日志级别 |
Actuator 常与 Prometheus + Grafana 集成实现可视化监控。
内嵌服务器——JAR 即服务
Spring Boot 内嵌了 Web 服务器(默认 Tomcat,可切换为 Undertow 或 Jetty),打包成可执行 JAR,java -jar app.jar 即可运行,不需要部署 WAR 到外部 Tomcat。
学习建议
- Spring Boot 快速入门 → 搭建第一个 Web 项目
- 自动配置原理 → 面试必考的核心机制
- Starter 机制 → 理解依赖管理,学写自定义 Starter
- 配置管理 → 多环境切换、
@ConfigurationProperties - Actuator 监控 → 生产环境必备