SpringBoot启动解析(事件监听器)


 
引言:在SpringBoot启动的过程中,除了加载容器Bean,还包括在不同的阶段调用不同的事件,大部分的事件都是为了容器bean初始化做准备,用事件的方式可以让我们的SpringBoot初始化更加的灵活,
我们可以自定义事件去作为事件监听的一个成员,被spring去调用,当然这块我自己没有试过, 如果我们想自己开发类似于nacos配置中心这样的开源框架,那一定是自己去实现事件监听,让spring去调
用,梳理了一下事件,大概包含以下几种类型:
1、Starting 事件类型:ApplicationStartingEvent
在SpringBoot启动开始时会调用该事件的监听器,加载的事件类型为ApplicationStartingEvent,事件监听器包括:LoggingApplicationListener主要是初始化日志的处理器Handler、初始化与格式化相关的
类:BackgroundPreinitializer
2、environmentPrepared 事件类型:ApplicationEnvironmentPreparedEvent
这一步还是比较关键的,它会调用Bootstrap事件监听器,在Bootstrap事件监听器中,要构造一个非WebServlet类型的spring初始化构造器,和SpringApplication执行一样,这个构造器主要用来加载环境
变量的,在执行过程中,会调用另外一种事件监听器ConfigFileApplicationListener,在ConfigFile监听器主要是遍历classpath下的本地文件,读取文件,并加载到environment的source中,执行完,我们
的class下的source下的系统变量 就作为我们下一步Nacos的前置条件。
3、contextPrepared 事件类型:ApplicationContextInitializedEvent
这类事件在跟踪源码的过程中,在默认配置下没有发挥任何作用,没有任何实际处理逻辑,也许是一种自实现插件式调用吧
4、contextLoaded 事件类型:ApplicationPreparedEvent
增加处理器、注册与log相关的实例 ,ConfigFileApplicationListener,在此事件中,该监听器在context里,增加了处理器,处理器主要的作用是拿到默认的配置文件,并放到末尾,LoggingApplicationListener,
在工厂Beanfactory注册和log相关的实例
5、事件类型:ApplicationStartedEvent

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM