目录
[一、@SpringBootApplication 是什么?](#一、@SpringBootApplication 是什么?)
[二、@SpringBootApplication 的核心组成](#二、@SpringBootApplication 的核心组成)
五、@EnableAutoConfiguration:开启自动装配(核心)
在 Spring Boot 项目中,几乎所有应用的启动类上都会看到这样一个注解:
java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
很多人知道"有它项目就能启动",但它究竟做了什么,却并不清楚。
一、@SpringBootApplication 是什么?
@SpringBootApplication 是 Spring Boot 提供的一个组合注解,它并不是一个"新能力",而是对多个核心注解的整合。
一个注解,完成 Spring Boot 应用启动所需的核心配置。
二、@SpringBootApplication 的核心组成
从源码角度看,它等价于以下三个注解的组合:
java
@Configuration
@EnableAutoConfiguration
@ComponentScan
这三个注解,分别解决了 Spring Boot 启动过程中的三件关键事情。
三、@Configuration:声明配置类
@Configuration 表示当前类是一个 Spring 配置类,
等价于传统 Spring 中的 XML 配置文件。
作用:
- 允许在类中使用 @Bean
- 将该类纳入 Spring 容器管理
这是 Spring Boot 仍然基于 Spring 的体现。
四、@ComponentScan:组件扫描
@ComponentScan 用于开启组件扫描机制。
默认行为:
- 扫描 启动类所在包及其子包
- 自动注册:
- @Component
- @Service
- @Repository
- @Controller
这也是为什么启动类通常放在根包下。
五、@EnableAutoConfiguration:开启自动装配(核心)
这是 @SpringBootApplication 中最关键的部分。
作用:告诉 Spring Boot:请根据当前环境和依赖,自动配置应用所需的 Bean。
它的底层实现依赖:
java
@Import(AutoConfigurationImportSelector.class)
自动装配大致流程
- 扫描 classpath
- 加载自动配置类
- 条件注解判断是否生效
- 注册 Bean 到容器
数据源、MVC、Tomcat、Jackson 等,都是在这里自动配置的。
六、为什么一个注解就能跑起来?
因为:
- @Configuration → 提供配置入口
- @ComponentScan → 发现并注册业务组件
- @EnableAutoConfiguration → 补齐基础设施组件
三者协作,构成了一个完整的 Spring Boot 启动基础。
七、总结
@SpringBootApplication 是 Spring Boot 应用的启动核心,它通过组合配置、扫描和自动装配,构建了应用运行所需的基础环境。