本专题导航
| 上级 | Spring 全家桶 |
| 同级 | Spring Framework · Spring Cloud |
| 篇 | 主题 |
|---|---|
| 本篇 | 入门与启动 |
| 下一篇 | 配置与多环境 |
| 自动配置与 Starter | |
| Web、运维与测试 |
背景与动机
Spring Boot 在 Spring Framework 之上提供约定优于配置:内嵌 Web 容器、自动装配、Starter 依赖,让你用最少配置跑起生产级应用。本篇先建立整体认识:它解决什么问题、如何启动、启动类上那几个注解各自干什么。
核心原理拆解
1. 什么是 Spring Boot
用最少 Spring 配置创建独立运行、生产就绪的 Spring 应用。可 java -jar 直接运行,无需单独部署 WAR 到外部 Tomcat(也可打 WAR 部署)。
2. 主要特性
- 创建独立 Spring 应用
- 内嵌 Tomcat / Jetty / Undertow
- Starter 依赖,简化构建(详见 自动配置与 Starter)
- 自动配置 Spring 与第三方库
- 生产特性:指标、健康检查、外部化配置
- 无需 XML,基本无代码生成
3. 快速创建项目
- start.spring.io
- Spring Tool Suite / IntelliJ IDEA
- Spring Boot CLI
4. 启动类 @SpringBootApplication
组合注解,等价于:
| 注解 | 作用 |
|---|---|
@SpringBootConfiguration | 配置类(含 @Configuration) |
@EnableAutoConfiguration | 开启自动配置,可 exclude 排除 |
@ComponentScan | 组件扫描 |
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}自动配置原理见 自动配置与 Starter。
5. 启动方式
main方法SpringApplication.runjava -jar app.jar- Maven / Gradle 插件
spring-boot:run
6. 是否需要独立容器
不需要。内嵌 Servlet 容器,jar 即应用。
7. 开启 Spring Boot 特性
- 继承
spring-boot-starter-parent - 导入
spring-boot-dependenciesBOM
8. 兼容传统 Spring XML
@ImportResource(locations = { "classpath:spring.xml" })9. Spring Boot 1.x、2.x 与 3.x
| 版本 | 要点 |
|---|---|
| 2.x | 基于 Spring 5 + JDK 8+ |
| 3.x | 需 JDK 17+,Jakarta EE 命名空间(javax.* → jakarta.*) |
2.x 起配置项命名有调整;可直接读取中文配置;Actuator 端点与安全默认策略变化。
常见陷阱与错误示例
1. 只加 @SpringBootApplication 却不扫到 Bean
默认扫描启动类所在包及子包。若把启动类放在根包外缘、业务代码在别的包,需显式 @ComponentScan(basePackages = "...")。
2. 误以为必须部署到外置 Tomcat
Boot 默认可执行 jar 即带容器;只有特殊运维要求才打 WAR 部署。
面试高频问题
完整 30 道速查见 Spring Boot 面试题 30 道。
一句话总结
Spring Boot 入门先记住:内嵌容器 + @SpringBootApplication + SpringApplication.run;配置、自动配置、Web 与运维分在专题后续三篇。