springbootApplication启动原理
时间: 2024-09-06 13:02:54 浏览: 48
SpringBoot为啥不用配置启动类的实现
Spring Boot 应用的启动原理主要涉及以下几个关键组件和步骤:
1. `@SpringBootApplication` 注解:这个注解是一个复合注解,它包含了 `@Configuration`、`@EnableAutoConfiguration` 和 `@ComponentScan`。这意味着 Spring Boot 应用会扫描带有 `@Component`、`@Service`、`@Repository`、`@Controller` 等注解的类,并将它们注册为 Spring 容器的 Bean。
2. `SpringApplication.run()` 方法:这是启动 Spring Boot 应用的主要入口点。`SpringApplication` 类会负责引导整个应用的启动过程。在调用 `run()` 方法时,它会执行以下操作:
- 创建 `SpringApplication` 实例。
- 配置应用的上下文初始化参数。
- 加载应用的 `ApplicationContext`。
- 触发 `ApplicationContextInitializer` 和 `ApplicationListener` 的注册。
- 将主配置类(即包含 `@SpringBootApplication` 注解的类)加载为配置源。
- 启动 `Spring` 应用上下文。
- 加载并调用所有 `CommandLineRunner` 和 `ApplicationRunner` 的 `run` 方法。
3. `SpringFactoriesLoader`:这是 Spring Boot 自动配置的核心。`SpringFactoriesLoader` 类的作用是在应用的 `META-INF/spring.factories` 文件中加载所有配置好的工厂类,并实现自动装配。
4. `@EnableAutoConfiguration`:这个注解会触发 Spring Boot 的自动配置机制。Spring Boot 会根据添加的依赖和 `spring.factories` 中定义的配置类,自动配置 Spring 应用上下文。
5. `Banner` 的打印:在 Spring Boot 应用启动时,会默认打印一个 ASCII 形式的横幅(Banner),这个横幅可以在 `application.properties` 或 `application.yml` 文件中通过设置 `spring.main.show-banner` 来关闭。
6. 应用监听器:Spring Boot 会在应用启动的各个阶段发布相应的事件,监听器可以监听这些事件并进行响应。
7. Spring Boot Actuator:如果应用中包含了 Actuator 相关依赖,它还会添加一些用于监控和管理应用的端点(Endpoint)。
阅读全文