0
点赞
收藏
分享

微信扫一扫

springboot启动源码分析-18

大漠雪关山月 2022-02-20 阅读 61

框架初始化步骤:

配置资源加载器

配置primarysource

应用环境监测

配置系统初始化

配置应用监听

配置main方法所在类

框架启动

计时器开始计时

headless模拟赋值(没有显示器没有键盘)

发送ApplicationStartingEvent

配置环境模块

发送ApplicationEnviromentPreparedEvent

打印banner

创建应用上下文对象

初始化失败分析器

关联springboot组件与应用上下文对象

发送applicationContextInitializedEvent

加载sources到context

发送applicationpreparedevent

刷新上下文

计时器停止计时

发送applicationStartedevent

调用框架启动扩展类

发送applicationreadyevent

框架自动化装配

收集配置文件中的配置工厂类

加载组件工厂

注册组件内定义bean

自定义初始化器

实现ApplicationContextInitializer接口

springApplication类初始后设置进去

application.properties内填写接口实现

tips

order越小越先执行

applicatiion.properties先执行

系统初始化器解析

作用:上下文刷新即refresh方法前调用

用来编码设置一些属性变量通常用在web环境中

可以通过order接口来进行排序

监听器模式要素

事件 监听器 广播器 触发机制

Tips

实现ApplicationListener接口针对单一事件监听

实现SmartApplicationListenner接口针对多种事件监听

order越小越先执行

application.properties中定义的优先于其他方式

xml构造bean

无参构造

有参构造

静态工厂方法

实例工厂方法

优点:低耦合 对象关系清晰 集中管理

缺点:繁琐

@Component

@Bean

@FactoryBean

@BeanDefinitionRegistryPostProcessor

@ImportBeanDefinitionRegistrar 一定要在启动类加上import引入才能生效,可以不加@Component

prepareBeanFactory:

设置beanfacotry一些属性

添加后置处理器

设置忽略的制动装配接口

注册一些组件

postprocessBeanFactory

子类重写以在beanfactory完成创建后做进一步设置

registerBeanPostProcessors

找到beanpostProcessors的实现

排序后注册进容器

initApplicationEventMulticaster:

实例化流程

start->getBean->doGetBean->getSingleton->CreateBean->instantiate->instantiateBean->createBeanInstance->doCreateBean->resolveBeforeInstantiation->populateBean->end

banner

启动加载器解析

计时器介绍:

实现CommandLineRunner接口

实现ApplicationRunner接口

通过order指定执行顺序,order值相同ApplicationRunner实现优先CommandLineRunner

default优先级高

.properties配置文件的优先级高于.yml

aware介绍

beanNameAware

BeanClassloaderAware

BeanfactoryAware

EnviromeentAware

embeddedvalueresolverAware

resourceloaderaware

applicationeventpublisheraware

messagesourceaware

applicationcontextaware

environment解析

spring profile将不同的配置放在不同的环境中

application.properties

application-default.properties

举报

相关推荐

SpringBoot源码分析

springboot源码分析(2)

0 条评论