本文介绍: spring boot版本为2.7.17。整体看一下spring相关事件。根据下文所给的源码关键处,打上断点可以进行快速调试。降低源码阅读难度

概述

spring boot 版本2.7.17

整体看一下springspring boot 相关事件
在这里插入图片描述

根据下文所给的源码关键处,打上断点可以进行快速调试。降低源码阅读难度。

实践

spring 相关事件

spring boot 相关事件

监听spring boot ready事件

代码

@Component
public class SpringBootReadyListener implements ApplicationListener<ApplicationReadyEvent&gt; {

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        System.out.println("....ready..");
    }
}

窗口执行结果
在这里插入图片描述

源码

初始化流程

org.springframework.boot.SpringApplicationRunListener 很重要的接口,后面spring boot 发事件消息使用这个接口实现org.springframework.boot.context.event.EventPublishingRunListener 来执行。

org.springframework.boot.SpringApplication#getRunListeners

在这里插入图片描述

调用流程

org.springframework.boot.SpringApplication#run(java.lang.Class<?>[], java.lang.String[])
org.springframework.boot.SpringApplication#run(java.lang.String...)
org.springframework.boot.SpringApplicationRunListeners#ready
org.springframework.boot.SpringApplicationRunListeners#doWithListeners(java.lang.String, java.util.function.Consumer<org.springframework.boot.SpringApplicationRunListener>, java.util.function.Consumer<org.springframework.core.metrics.StartupStep>)
org.springframework.boot.context.event.EventPublishingRunListener#ready
org.springframework.context.support.AbstractApplicationContext#publishEvent(java.lang.Object, org.springframework.core.ResolvableType)
org.springframework.context.support.AbstractApplicationContext#getApplicationEventMulticaster
org.springframework.context.event.SimpleApplicationEventMulticaster#invokeListener
org.springframework.context.event.SimpleApplicationEventMulticaster#doInvokeListener

在这里插入图片描述

发送启动 ready 事件消息
在这里插入图片描述
在这里插入图片描述

执行结束
在这里插入图片描述

结束

根据上文所给的源码关键处,打上断点可以进行快速调试。降低源码阅读难度。

原文地址:https://blog.csdn.net/2301_79691134/article/details/134774785

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43912.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注