跳到主要内容

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 做了三件事让这一切成为可能:

  1. 自动配置:根据类路径中的依赖自动配置 Bean
  2. Starter 依赖:一个依赖引入一整套技术栈
  3. 内嵌服务器:不需要外部 Tomcat,打成 JAR 直接运行

核心知识点

自动配置——"魔法"背后的原理

@SpringBootApplication 是一个组合注解,其中最关键的是 @EnableAutoConfiguration。自动配置的流程:

  1. Spring Boot 启动时,AutoConfigurationImportSelector 读取 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件
  2. 该文件列出了所有自动配置类(如 DataSourceAutoConfigurationRedisAutoConfiguration
  3. 每个自动配置类上都有 条件注解@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-webSpring MVC + 内嵌 Tomcat + Jackson
spring-boot-starter-data-jpaJPA + Hibernate + 连接池
spring-boot-starter-data-redisRedis 客户端 + Lettuce
spring-boot-starter-testJUnit 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),打包成可执行 JARjava -jar app.jar 即可运行,不需要部署 WAR 到外部 Tomcat。


学习建议

推荐学习路径
  1. Spring Boot 快速入门 → 搭建第一个 Web 项目
  2. 自动配置原理 → 面试必考的核心机制
  3. Starter 机制 → 理解依赖管理,学写自定义 Starter
  4. 配置管理 → 多环境切换、@ConfigurationProperties
  5. Actuator 监控 → 生产环境必备

相关链接