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


首先来回顾下SpringBoot中给我们提供的默认的监听器,这些都定义在spring.factories文件中。

| 监听器 | 监听事件 | 说明 |

| — | — | — |

| ClearCachesApplicationListener | ContextRefreshedEvent | 当触发ContextRefreshedEvent事件会清空应用的缓存 |

| ParentContextCloserApplicationListener | ParentContextAvailableEvent | 触发ParentContextAvailableEvent事件会完成父容器关闭的监听器 |

| CloudFoundryVcapEnvironmentPostProcessor | ApplicationPreparedEvent | 判断环境中是否存在VCAP_APPLICATION或者VCAP_SERVICES。如果有就添加Cloud Foundry的配置;没有就不执行任何操作。 |

| FileEncodingApplicationListener | ApplicationEnvironmentPreparedEvent | 文件编码的监听器 |

| AnsiOutputApplicationListener | ApplicationEnvironmentPreparedEvent | 根据 spring.output.ansi.enabled参数配置 AnsiOutput |

| ConfigFileApplicationListener | ApplicationEnvironmentPreparedEvent <br>ApplicationPreparedEvent | 完成相关属性文件的加载,application.properties

application.yml

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

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

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

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

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

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

2.SpringBoot中的事件类型


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

| 事件 | 说明 |

| — | — |

| ApplicationStartingEvent | 容器启动的事件 |

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

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

| ApplicationPreparedEvent | 应用准备的事件 |

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

| ApplicationStartedEvent | 应用Started状态事件 |

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

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

image.png

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

3.自定义事件


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

3.1 监听所有事件

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

image.png

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

即使是面试跳槽,那也是一个学习的过程。只有全面的复习,才能让我们更好的充实自己,武装自己,为自己的面试之路不再坎坷!今天就给大家分享一个Github上全面的Java面试题大全,就是这份面试大全助我拿下大厂Offer,月薪提至30K!

我也是第一时间分享出来给大家,希望可以帮助大家都能去往自己心仪的大厂!为金三银四做准备!
一共有20个知识点专题,分别是:

Dubbo面试专题

JVM面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Java并发面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Kafka面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MongDB面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MyBatis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

MySQL面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Netty面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

RabbitMQ面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Redis面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

Spring Cloud面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

SpringBoot面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

zookeeper面试专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

常见面试算法题汇总专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

计算机网络基础专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

设计模式专题

这个GItHub上的Java项目开源了,2020最全的Java架构面试复习指南

26261)]

常见面试算法题汇总专题

[外链图片转存中…(img-r939pIKw-1710745426262)]

计算机网络基础专题

[外链图片转存中…(img-YX1aoFMB-1710745426262)]

设计模式专题

[外链图片转存中…(img-3S1T0Yt6-1710745426262)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值