springboot知识点2

2022-05-26  本文已影响0人  rice88

原发布于个人公众号 rice 若初见似少年 2020-09-12 20:28


springboot自动装配

spring framework时代的装配标签@Import @ComponentScan

springboot时代 @EnableAutoConifguration

解析工作由以下类完成publicclassAutoConifgurationImportSelectorimplementsDeferredImportSelector{@OverridepublicString[]selectImports(AnnotationMetadata annotationMetadata){    .......  }}


通过SpringFactoriesLoader读取META-INF/spring.factories指定的类的实现类

通过注解属性exclude和excludeName来排除配置class

实现接口AutoConfigurationImportListener(springboot1.5引入)可以监听到配置class的事件,在配置class读取完成后触发

配置class排序@AutoConfigurationOrder @AutoConfigurationBefore @AutoConfigurationIAfter


自定义springboot自动装配


@Conditonal派生的注解@ConditonalOnClass@ConditonalOnMissingClass@ConditonalOnBean@ConditonalOnMissingBean@ConditonalOnProperty@ConditonalOnResource@ConditonalOnWebApplication@ConditonalOnNotWebApplication@ConditonalOnExpression


SpringApplication生命周期

1.初始化阶段

构造阶段

配置阶段

2.运行阶段

准备阶段

上下文启动阶段

上下文启动后阶段

3.结束阶段

正常结束

异常结束


构造过程

获取web应用的类型,webApplicationType=SERVLET/REACTIVE/NONE

加载spring应用上下文初始化器(ApplicationContextInitialier)

加载spring应用事件监听器(ApplicationListener)

获取应用引导主类 mainApplicationClass


配置阶段

该阶段是前一阶段的补充,主要是提供SpringApplication和SpringApplicationBuilder的API给开发者使用。


运行准备阶段

从run方法到prepareContext


理解SpringApplicationRunListener监听方法:starting()应用启动environmentPrepared环境准备完成contextPrepared上下文准备完成contextLoaded上下文加载完成started上下文已启动,bean已初始化完成running应用运行中failed应用运行失败EventPublishingRunListener是spring内建唯一实现理解Spring事件监听机制理解SpringBoot事件监听机制


1.封装入参为ApplicationArguments

2.准备运行环境ConfigurableEnvironment

3.创建应用上下文ConfigurableApplicationContext

4.准备应用上下文prepareContext

4.1.设置运行环境

4.2.上下文后置处理

4.3.应用上下文初始化器ApplicationContextInitialier

4.4.执行SpringApplicationRunListener.contextPrepared

4.5.注册SpringBoot bean

4.6.合并Spring应用上下文配置源

4.7.加载Spring应用上下文配置源

4.8.回调SpringApplicationRunListener.contextLoaded


上下文启动阶段

由refreshContext方法实现


上下文启动后阶段

由afterRefresh方法实现,提供未实现的方法给开发者做扩展实现


正常结束


异常结束

FailureAnalyzers

FailureAnalysisReporter


应用退出

注册shutdownHook

上一篇下一篇

猜你喜欢

热点阅读