spring监听

一、概述

监听就是一个事务的触发,会被一个监听器观察到,并执行相应的处理,也就是典型的观察者模式。

监听的三大要素:

1、事件(触发条件)
2、监听器(观察这个事件是否执行)
3、触发动作(观察到了之后,要执行什么操作)

在这里插入图片描述

二、spring中用监听器

1、简单的使用方式:

(1)、创建一个事件,继承ApplicationEvent抽象类

在这里插入图片描述

(2)、创建一个监听器,实现ApplicationListener接口,
泛型中指定事件类型,在重写的onAppEvent方法中,
写监听到改事件之后的执行逻辑
在这里插入图片描述

(3)、注册监听器到容器中,发布事件。

在这里插入图片描述

总结:

	流程就是定义好事件,然后定义一个监听器来监听这个事件,
	然后再用applicationContext来注册监听器到spring容器,
	并发布一个事件。
	当发布事件之后,监听器就会监听到该事件,
	并执行onAppevent方法里面的逻辑。

2、利用注解的方式

(1)、定义一个事件,和上面原始方式一样

在这里插入图片描述

(2)、注解方式定义监听器,在这个事件处理模块里面,可以定义对公监听器
,不用一个监听器写一个类,方便统一管理。
在这里插入图片描述

有一个EventListenerMethodProcessor类,这个类是application启动时自动注册执行的。
该类的功能是扫描@EventListener注解并生成一个ApplicationListener实例。


(3)、发布事件,异步发布,比如在做某些操作的时候才发布,而不是和上面一样
项目启动时就发布事件

这样就需要实现ApplicationContextAware接口,获得ApplicationContext实例,通过context发事件。
因为ApplicationContext实现了ApplicationEventPublisher接口,所以它有发事件的功能。

在这里插入图片描述

总结:

先定义一个事件,然后在一个统一的处理类里面用注解的方式去定义对应的监听器,
spring容器启动的时候会根据这个注解生成对应的监听器。
然后异步发布事件,也就是在执行某个操作的时候才发布事件,
而不是项目启动的时候就发布。
异步发布事件需要在对应的类去实现ApplicationContextAware接口,
用于获取到ApplicationContext实例进行发布。

3、线程池异步监听

(1)、创建一个异步线程池处理配置对象

在这里插入图片描述

(2)、定义事件发布者,这里使用springContext代理,也可以应用MQ或其他事件框架

在这里插入图片描述

(3)、在统一的处理类里面用注解或者原始的继承ApplicationListener的方式来注册监听器
在这里插入图片描述

(4)、在对应的位置用事件发布者对象来发布事件

在这里插入图片描述

总结:

先定义好事件,然后注册好对应的监听器

然后定义一个统一的异步线程池

然后定义事件发布者,这里使用springContext代理,也可以应用MQ或其他事件框架,
在发布方法上用注释@Async(指定线程池)

最后在需要发布的地方用事件发布者发布事件(是用线程池异步发布的的),
就会被监听器监听到,从而执行相应的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值