# 什么是 Spring Boot?
4 min read
Table of Contents
什么是 Spring Boot?
【核心定义】
Spring Boot 是一个基于 Spring 框架的快速开发脚手架,通过约定大于配置和自动装配机制,简化了 Spring 应用的初始搭建和开发过程。
【关键要点】
- 约定大于配置:Spring Boot 提供了一套默认配置(如内嵌服务器、默认日志框架),开发者无需手动配置即可快速启动项目。
- 自动装配(Auto-Configuration):通过
@EnableAutoConfiguration或spring.factories文件,根据类路径下的依赖自动配置 Bean,减少 XML 或 Java 显式配置。 - 内嵌容器:默认集成 Tomcat、Jetty 或 Undertow,应用可打包为独立 JAR 文件直接运行,无需部署到外部 Web 服务器。
- 起步依赖(Starter):通过 Maven/Gradle 依赖管理,一键引入功能模块(如
spring-boot-starter-web包含 Web 开发所需全部依赖),解决版本冲突问题。 - 生产就绪特性:提供 Actuator 模块监控应用健康状态、指标收集,以及外部化配置(如
application.yml)支持多环境部署。
【深度推导/细节】
- 自动装配原理:
- Step 1: Spring Boot 启动时扫描
META-INF/spring.factories文件,加载org.springframework.boot.autoconfigure.EnableAutoConfiguration指定的配置类。 - Step 2: 配置类通过
@Conditional系列注解(如@ConditionalOnClass、@ConditionalOnMissingBean)判断条件是否满足,动态注册 Bean。 - Step 3: 例如,当类路径存在
Servlet.class和Tomcat.class时,自动配置内嵌 Tomcat 服务器。
- Step 1: Spring Boot 启动时扫描
- 配置优先级:Spring Boot 支持外部化配置,优先级顺序为:命令行参数 > 系统环境变量 >
application-{profile}.yml>application.yml,便于灵活切换开发/生产环境。
【关联/对比】
- 与传统 Spring MVC 对比:
- Spring MVC 需手动配置 DispatcherServlet、视图解析器、数据库连接等;Spring Boot 通过 Starter 和自动装配零配置启动。
- Spring Boot 内嵌容器,传统 Spring 应用需部署到外部 Tomcat。
- 与 Spring Cloud 关系:Spring Boot 是微服务架构的基础,Spring Cloud 基于 Boot 提供分布式系统工具(如服务发现、配置中心)。
『面试官追问』
- Spring Boot 如何实现自动装配?请说明
@SpringBootApplication注解的组成。 - Spring Boot 启动流程是怎样的?
- 如何自定义 Starter?
- Spring Boot 有哪些核心配置文件?优先级如何?
- Spring Boot 2.x 与 1.x 的主要区别是什么?
【版本差异】
- Spring Boot 1.x:基于 Spring 4,配置主要通过
application.properties,Actuator 端点较少。 - Spring Boot 2.x:基于 Spring 5,支持响应式编程(WebFlux),默认使用 HikariCP 连接池,Actuator 端点更丰富且默认启用安全控制。
- Spring Boot 3.x:基于 Spring 6 和 Jakarta EE 9+,要求 Java 17+,全面转向 GraalVM 原生镜像支持。
【直击痛点】
- 内嵌容器默认端口:8080(可通过
server.port修改)。 - 自动装配条件注解:如
@ConditionalOnClass确保类路径存在时才生效,避免配置冲突。 - 配置占位符:
${}支持动态属性注入,如@Value("${app.name}")。
(注:本题未涉及数据结构、核心算法、多线程等,故相关模块未展开。若需深入 Spring Boot 的并发处理或性能优化机制,可进一步探讨其异步处理、线程池配置等。)