跳到主要内容

Spring Boot 教程

欢迎学习 Spring Boot!本教程将带你从零基础开始,逐步掌握 Spring Boot 框架的核心知识和实战技能。

什么是 Spring Boot?​

Spring Boot 是由 Pivotal 团队开发的开源框架,用于简化 Spring 应用的初始搭建和开发过程。它基于 Spring 框架,提供了自动配置、起步依赖等特性,让开发者能够快速构建生产级别的应用。

Spring Boot 的核心特性​

1. 独立运行的 Spring 应用​

Spring Boot 应用可以打包成独立的 JAR 文件,内置 Tomcat、Jetty 或 Undertow 容器,无需部署 WAR 文件到外部服务器:

# 运行 Spring Boot 应用
java -jar myapp.jar

解释:传统 Spring 应用需要打包成 WAR 文件并部署到外部服务器,而 Spring Boot 内置了 Servlet 容器,可以直接运行。

2. 自动配置(Auto-configuration)​

Spring Boot 根据项目依赖自动配置 Spring 应用:

@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}

解释:@SpringBootApplication 注解组合了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan,Spring Boot 会自动扫描并配置应用所需的组件。

3. 起步依赖(Starter Dependencies)​

Spring Boot 提供了一系列"起步依赖",简化依赖管理:

<!-- 一个依赖包含了 Spring MVC、Tomcat、Jackson 等 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

解释:起步依赖是一组相关依赖的集合,无需逐个添加依赖,也避免了版本冲突问题。

4. 生产就绪功能​

提供健康检查、指标监控、外部化配置等生产级特性:

# application.yml
management:
endpoints:
web:
exposure:
include: health,info,metrics

解释:Spring Boot Actuator 提供了监控和管理端点,方便在生产环境中监控应用状态。

5. 无代码生成和 XML 配置​

Spring Boot 不需要 XML 配置文件,完全基于注解和 Java 配置:

@Configuration
public class MyConfiguration {

@Bean
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}

解释:Spring Boot 推崇"约定优于配置",减少了样板代码和 XML 配置。

Spring Boot vs Spring​

特性SpringSpring Boot
配置方式XML 或 Java 配置自动配置 + 属性配置
内置容器无Tomcat、Jetty、Undertow
依赖管理手动管理起步依赖
启动方式部署到外部服务器独立运行 JAR
生产特性需额外配置内置 Actuator
学习曲线较陡峭相对平缓

为什么学习 Spring Boot?​

1. 行业标准​

Spring Boot 是 Java 企业级开发的主流框架,广泛应用于互联网公司和企业项目:

  • 阿里巴巴、腾讯、字节跳动等大厂都在使用
  • 微服务架构的首选框架
  • 云原生应用开发的标准选择

2. 提高开发效率​

  • 自动配置减少样板代码
  • 起步依赖简化依赖管理
  • 内置容器简化部署流程
  • 开发者工具支持热重载

3. 生态系统完善​

  • Spring Cloud:微服务架构解决方案
  • Spring Data:数据访问简化
  • Spring Security:安全框架
  • Spring Batch:批处理框架

4. 学习资源丰富​

  • 官方文档完善
  • 社区活跃,问题易解决
  • 大量开源项目参考

Spring Boot 版本​

版本历史​

版本发布时间重要特性
1.02014自动配置、起步依赖
2.02018响应式编程、Spring 5
3.02022Java 17+、Jakarta EE 9+、原生编译支持
3.22023虚拟线程支持、改进的观测性
3.32024增强的虚拟线程支持、Crac 支持
3.42024结构化日志默认启用、优雅关闭默认启用、MockMvcTester

重要特性说明:

  • 虚拟线程(Virtual Threads):Spring Boot 3.2 开始支持虚拟线程,需要 Java 21+。虚拟线程是轻量级线程,可以显著提高高并发应用的吞吐量。只需添加一行配置即可启用:
spring:
threads:
virtual:
enabled: true

启用后,Tomcat 请求处理、@Async 异步方法、定时任务等都会使用虚拟线程,大幅提升 I/O 密集型应用的性能。Spring Boot 3.4 进一步扩展了虚拟线程支持,包括 OtlpMeterRegistry 和 Undertow web server。

  • 结构化日志:Spring Boot 3.4 引入了结构化日志支持,内置支持 Elastic Common Schema(ECS)、Graylog Extended Log Format(GELF)和 Logstash 格式:
logging:
structured:
format:
console: ecs # 或 gelf、logstash
file: ecs
  • 优雅关闭默认启用:Spring Boot 3.4 默认启用嵌入式 Web 服务器的优雅关闭功能,确保应用关闭时能够完成正在处理的请求:
# 如需恢复之前的行为
server:
shutdown: immediate
  • 可观测性增强:Spring Boot 3.x 提供了完整的可观测性支持,基于 Micrometer Observation API 统一处理指标和追踪,支持 OpenTelemetry、Zipkin、Jaeger 等。

版本选择建议​

<!-- 推荐使用最新的稳定版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.0</version>
</parent>

版本选择原则:

  • 新项目:使用最新的稳定版本
  • 维护项目:根据兼容性选择合适版本
  • 企业项目:考虑长期支持(LTS)版本

Java 版本要求​

Spring Boot 版本最低 Java 版本推荐 Java 版本
2.xJava 8Java 11
3.0-3.1Java 17Java 17
3.2+Java 17Java 21

教程目录​

本教程涵盖从入门到进阶的完整内容:

基础入门​

核心原理​

配置管理​

Web 开发​

  • Web 开发 - RESTful API、参数验证、异常处理

数据访问​

  • 数据访问 - Spring Data JPA、MyBatis 集成、事务管理

安全框架​

日志管理​

  • 日志配置 - Logback 配置、日志级别、日志文件

监控管理​

  • 监控管理 - Actuator、健康检查、指标监控、可观测性、分布式追踪

测试​

  • 测试 - 单元测试、集成测试、Mock

自定义扩展​

原生编译​

知识速查​

  • 速查表 - Spring Boot 常用配置和注解速查

学习建议​

1. 前置知识​

学习 Spring Boot 前需要掌握:

  • Java 基础:面向对象、集合、泛型、Lambda 表达式
  • Maven/Gradle:项目构建工具
  • Spring 基础:IoC、AOP 概念
  • Web 基础:HTTP 协议、RESTful API

2. 学习路径​

基础阶段          核心阶段          进阶阶段          实战阶段
│ │ │ │
▼ ▼ ▼ ▼
环境配置 → 自动配置原理 → Spring Security → 项目实战
快速入门 → Web 开发 → 分布式架构 → 微服务
配置管理 → 数据访问 → 性能优化 → 部署运维

3. 实践建议​

  • 动手实践:每个知识点都要亲自编码验证
  • 阅读源码:理解 Spring Boot 的设计思想
  • 项目驱动:通过实际项目巩固知识
  • 关注更新:Spring Boot 迭代快,保持学习

4. 常见误区​

  • ❌ 只会用,不懂原理
  • ❌ 过度依赖自动配置,不知如何自定义
  • ❌ 忽视 Spring 基础直接学 Spring Boot
  • ❌ 不关注版本兼容性

开发工具推荐​

IDE​

  • IntelliJ IDEA(推荐):最佳 Spring Boot 开发体验
  • Eclipse + Spring Tools:免费选项
  • VS Code + Extension Pack for Spring:轻量级选择

辅助工具​

  • Spring Initializr:快速创建项目(start.spring.io)
  • Spring Boot DevTools:开发时热重载
  • JRebel:商业热部署工具

参考资源​

官方资源​

学习资源​

准备好了吗?​

准备好开始学习 Spring Boot 了吗?让我们从环境配置开始,逐步掌握 Spring Boot 的核心知识和实战技能!