SpringBoot 学习之事件发布、订阅

  ApplcationEvent以及Listtener 是Spring 为我们提供的一个事件监听、订阅的实现,内部实现的原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高系统可扩展性以及可维护性。在一些与业务无关的、通用的操作方法,我们可以把它设计成事件监听器,事件发布者不需要考虑谁去监听、监听的具体内容是什么,发布者的工作只是为了发布事件而已。

  在Spring Boot启动过程中,每个不同的启动阶段会分别广播不同的内置生命周期事件,然后相应的监听器会监听这些事件来执行一些初始化逻辑工作比如ConfigFileApplicationListener会监听onApplicationEnvironmentPreparedEvent事件来加载配置文件application.properties的环境变量等。

imagae

发布顺序事件说明
1ApplicationStartingEvent框架启动事件
2ApplicationEnvironmentPreparedEvent环境准备完毕事件
3ApplicationContextInitializedEvent上下文初始化
4ApplicationPreparedEvent上下文创建完毕,但是Bean还没有加载完毕
5ApplicationStartedEventbean实例化完成,但是未调用Runners接口
6ApplicationReadyEvent在所有的命令行应用启动后发送此事件
7ApplicationFailedEvent在启动时异常发送事件

  在这里只是简单的讲解如何使用ApplicationEvent以及使用Listen来完成业务逻辑的解耦,不涉及到复杂的数据交互,所有需要引入的依赖很少,项目Pom.xml配置文件如下:

<dependency>
	<groupid>org.springframework.boot</groupid>
	<artifactid>spring-boot-starter</artifactid>
</dependency>
<dependency>
	<groupid>org.projectlombok</groupid>
	<artifactid>lombok</artifactid>
	<scope>provided</scope>
</dependency>

事件源

首先要创建一个事件,监听都是围绕着事件来进行的。事件的代码很简单:

事件触发

事件发布是由ApplicationContext对象管控的,在事件发布之前需要注入 ApplicationContext对象,然后通过 publishEvent 方法完成事件发布。

事件处理程序

现在需要使用@component注解来声明该监听需要被Spring 注入管理,在用户注册监听实现方法上添加 @EventListener 注解,当有userRegisterEvent事件发布时候,监听程序会自动调用,然后根据方法内配置的事件完成监听

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独泪了无痕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值