栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【SpringBoot源码】掌握了监听机制的本质开发中这真的很爽

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【SpringBoot源码】掌握了监听机制的本质开发中这真的很爽

前面源码内容详细讲解过 |

| DelegatingApplicationListener | ApplicationEnvironmentPreparedEvent | 监听到事件后转发给环境变量 context.listener.classes指定的那些事件监听器 |

| ClasspathLoggingApplicationListener | ApplicationEnvironmentPreparedEvent
ApplicationFailedEvent | 一个SmartApplicationListener,对环境就绪事件ApplicationEnvironmentPreparedEvent/应用失败事件ApplicationFailedEvent做出响应,往日志DEBUG级别输出TCCL(thread context class loader)的classpath。 |

| LoggingApplicationListener | ApplicationStartingEvent
ApplicationEnvironmentPreparedEvent
ApplicationPreparedEvent
ContextClosedEvent
ApplicationFailedEvent | 配置 LoggingSystem。使用 logging.config环境变量指定的配置或者缺省配置 |

| LiquibaseServiceLocatorApplicationListener | ApplicationStartingEvent | 使用一个可以和Spring Boot可执行jar包配合工作的版本替换liquibase ServiceLocator |

| BackgroundPreinitializer | ApplicationStartingEvent
ApplicationReadyEvent
ApplicationFailedEvent | 尽早触发一些耗时的初始化任务,使用一个后台线程 |

[](()2.SpringBoot中的事件类型


然后我们来看下对应的事件类型,SpringBoot中的所有的事件都是继承于 ApplicationEvent这个抽象类,在SpringBoot启动的时候会发布如下的相关事件,而这些事件其实都实现了 SpringApplicationContext接口。

| 事件 | 说明 |

| — | — |

| ApplicationStartingEvent | 容器启动的事件 |

| ApplicationEnvironmentPreparedEvent | 应用处理环境变量相关的事件 |

| ApplicationContextInitializedEvent | 容器初始化的事件 |

| ApplicationPreparedEvent | 应用准备的事件 |

| ApplicationFailedEvent | 应用启动出错的事件 |

| ApplicationStartedEvent | 应用Started状态事件 |

| ApplicationReadyEvent | 应用准备就绪的事件 |

也就是这些事件都是属于SpringBoot启动过程中涉及到的相关的事件

当然在启动过程中还会发布其他的相关事件,大家可以自行查阅相关源码哦

[](()3.自定义事件


接下来我们通过几个自定义事件来加深下对事件监听机制的理解

[](()3.1 监听所有事件

我们先创建一个自定义监听器,来监听所有的事件。创建一个Java类,实现ApplicationListener接口在泛型中指定要监听的事件类型即可,如果要监听所有的事件,那么泛型就写ApplicationEvent。

之后为了在容器启动中能够发下我们的监听器并且添加到SimpleApplicationEventMulticaster中,我们需要在spring.factories中注册自定义的监听器

这样当我们启动服务的时候就可以看到相关事件发布的时候,我们的监听器被触发了。

[](()3.1 监听特定事件

那如果是监听特定的事件呢,我们只需要在泛型出制定即可。

启动服务查看

[](()3.2 自定义事件

那如果我们想要通过自定义的监听器来监听自定义的事件呢?首先创建自定义的事件类,非常简单,只需要继承ApplicationEvent即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号