四大核心
1、自动装配
@SpringBootApplication相当于三个 @Enablexxx 自动装配某个功能
- @SpringBootConfiguration
- @EnableAutoConfiguration 通过@Import来完成 META-INF/spring.factories
- @import
- 单个bean
- 多个配置类
- spring.factories 一个配置文件根据bean全路径创建对象(实现ImporSelector接口传入 文件名字数组)(springboot启动时通过@Import导入所有的spring.factories文件)
- ImportBeanDefinitionRestrar
- @import
- @ComponentScan 扫描有@Component的类
2、Starter

3、内置web容器
- tomcat源码
- 构建成starter灵活配置port host
- 是springboot官方实现 xxxAutoConfiguration不在中间件starter中写着
4、监控
Endpoints: 需要监控的端点
启动流程
- 加载主类:@SpringBootApplication(@SpringBootConfiguration、@EnableAutoConfiguration 和 @ComponentScan)
- 创建 SpringApplication 对象:SpringApplication.run() 方法,会创建一个 SpringApplication 对象。这个对象负责管理 Spring 应用的启动和初始化
- 准备环境:SpringApplication 对象负责准备 Spring 应用的环境。这包括读取配置文件、解析命令行参数、收集系统环境变量等。这些环境属性将会被用于配置应用上下文和其他组件
- 创建应用上下文:SpringApplication 使用环境信息初始化 Spring 应用上下文ApplicationContext(管理bean)。根据应用是 Web 应用还是非 Web 应用,Spring Boot 会创建对应的应用上下文
- 加载 Bean 定义:应用上下文初始化后,Spring Boot 开始加载 Bean 的定义。它会扫描项目中的组件和配置类(由 @ComponentScan 和 @Configuration 注解指定),并将它们注册到应用上下文中
- 自动配置:Spring Boot 的自动配置机制会根据项目中添加的 jar 依赖,尝试猜测并配置可能需要的 Bean。自动配置类会根据条件进行加载和执行,以确保配置的正确性和合理性
- Bean 实例化:所有配置类和组件被加载后,Spring 容器会根据需要创建和配置 Bean 实例。这些 Bean 可能是由 Spring Boot 提供的自动配置,也可能是开发者自定义的 Bean
- 刷新应用上下文:当所有 Bean 定义加载完毕后,应用上下文会被刷新。在这个阶段,Spring Boot 会执行一系列的初始化动作,确保所有 Bean 都被正确地创建和配置。
- 运行应用:应用上下文初始化完成后,Spring Boot 将应用状态标记为“已启动”。此时,应用已准备就绪,可以处理请求和响应。
- 触发生命周期事件:在应用启动过程中,Spring Boot 会触发一系列的生命周期事件,如应用启动事件、应用就绪事件等。开发者可以监听这些事件并执行相应的操作。
通过这些步骤,Spring Boot 实现了一个简洁而高效的启动过程,使得开发者能够快速启动和运行一个独立的、生产级的应用程序。