Spring Boot 是一个基于 Spring 框架的快速开发工具,旨在简化 Spring 应用的初始搭建和开发流程。它通过“约定优于配置”的理念,减少了大量的手动配置,让开发者能够更专注于业务逻辑。以下是 Spring Boot 的核心详解:
一、Spring Boot 的核心特性
-
自动配置(Auto-Configuration)
Spring Boot 根据项目依赖(如spring-boot-starter-web
)和类路径中的类,自动配置 Spring 应用。例如:-
检测到
spring-webmvc
时,自动配置 Spring MVC。 -
检测到
H2
数据库驱动时,自动配置内存数据库。
-
-
起步依赖(Starter Dependencies)
通过spring-boot-starter-*
依赖,快速集成常用功能(如 Web、JPA、Security 等),自动解决依赖版本冲突问题。 -
内嵌服务器(Embedded Server)
默认内嵌 Tomcat、Jetty 或 Undertow,无需部署 WAR 包,直接运行main
方法即可启动应用。 -
Actuator 监控
提供生产级监控端点(如/health
,/metrics
),支持应用的健康检查、性能指标收集等。 -
外部化配置
支持通过application.properties
或application.yml
文件配置应用,且支持多环境配置(如application-dev.yml
,application-prod.yml
)。
二、Spring Boot 的核心注解
-
@SpringBootApplication
组合注解,包含以下三个核心注解:-
@SpringBootConfiguration
:标记为配置类。 -
@EnableAutoConfiguration
:启用自动配置。 -
@ComponentScan
:自动扫描当前包及子包的组件(如@Component
,@Service
)。
-
-
@RestController
组合@Controller
和@ResponseBody
,用于构建 RESTful API。 -
@Conditional
系列注解
控制 Bean 的加载条件,如@ConditionalOnClass
(类存在时生效)、@ConditionalOnProperty
(配置项存在时生效)。
三、快速创建 Spring Boot 项目
-
使用 Spring Initializr
访问 https://start.spring.io,选择依赖(如Spring Web
,Spring Data JPA
),生成项目模板。 -
通过 IDE 插件
IntelliJ IDEA 或 Eclipse 提供 Spring Initializr 集成,可直接创建项目。 -
手动构建(Maven/Gradle)
添加spring-boot-starter-parent
作为父项目,并配置起步依赖。
示例 Maven 依赖:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.0</version>
</parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
四、Spring Boot 的启动流程
-
主类入口
通过main
方法启动应用,调用SpringApplication.run()
:@SpringBootApplication public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);} }
-
SpringApplication 生命周期
-
加载
ApplicationContext
(默认AnnotationConfigServletWebServerApplicationContext
)。 -
执行
CommandLineRunner
或ApplicationRunner
接口的 Bean。 -
启动内嵌 Web 服务器。
-
五、常用配置示例
- 修改服务器端口
server.port=8081
2. 数据库配置(MySQL + JPA)
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: 123456jpa:hibernate:ddl-auto: update
3. 自定义属性
myapp.api.key=abc123
六、Spring Boot 的优缺点
优点:
-
快速搭建项目,减少样板代码。
-
内嵌服务器,简化部署。
-
生态丰富,整合主流框架(如 Redis、Kafka、Spring Security)。
缺点:
-
自动配置可能隐藏底层细节,调试复杂场景较困难。
-
对非传统应用场景(如高度定制化)需要手动覆盖配置。
七、适用场景
-
微服务开发(结合 Spring Cloud)。
-
快速原型开发。
-
云原生应用(支持 Docker、Kubernetes 部署)。
八、学习资源
-
官方文档
Spring Boot Reference Guide -
书籍推荐
《Spring Boot 实战》、《Spring 实战(第6版)》 -
社区
Stack Overflow、GitHub 开源项目。