SpringBoot工作流程

69 阅读1分钟

1.启动阶段:

当Spring Boot应用启动时,SpringApplication类会被实例化。这个类负责创建和配置应用上下文,并启动应用。 SpringApplicationRunListeners 被用来通知监听器在启动的不同阶段(如开始、环境准备、上下文初始化、应用启动完成)。

2.环境配置:

SpringEnvironment 接口的实现类(如StandardEnvironment)被用来加载外部配置(application.properties 或 application.yml)和系统属性。 PropertySources 用于管理不同来源的配置属性。

3.上下文初始化:

ApplicationContextInitializer 接口的实现类可以在这里介入,用于在上下文创建之前进行自定义初始化。 ConfigurableEnvironment 允许在上下文中添加额外的 PropertySource 或 BeanDefinition。

4.Bean定义加载:

BeanDefinitionRegistryPostProcessor 允许在所有的 BeanDefinition 加载完成后进行修改或添加新的 BeanDefinition。 @Configuration 注解的类被扫描并处理,这些类中的 @Bean 方法会被调用,生成相应的 BeanDefinition。

5.依赖注入:

BeanFactory 或 ApplicationContext 用于实例化和组装 Bean,处理依赖注入。 @Autowired 和其他相关的注解(如 @Inject)被处理,以实现依赖注入。

6.后处理:

BeanPostProcessor 允许在 Bean 初始化前后进行额外的处理。 @PostConstruct 注解的方法会在 Bean 初始化完成后执行。

7.启动完成:

所有的 Bean 都已经被加载和初始化,ApplicationRunner 和 CommandLineRunner 接口的实现类会被执行。 应用完全启动,可以处理请求。