大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
原理:观察者模式#
spring的事件监听有三个部分组成,事件(ApplicationEvent)、监听器(ApplicationListener)和事件发布操作。
事件#
事件类需要继承ApplicationEvent,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
这里为了简单测试,所以写的很简单。
事件类是一种很简单的pojo,除了需要继承ApplicationEvent也没什么了,这个类有一个构造方法需要super。
事件监听器#
1 2 3 4 5 6 7 8 9 10 |
|
事件监听器需要实现ApplicationListener接口,这是个泛型接口,泛型类类型就是事件类型,其次需要是spring容器托管的bean,所以这里加了@component,只有一个方法,就是onApplicationEvent。
事件发布操作#
有了事件和监听器,不发布事件也不用,事件发布方式很简单
1 |
|
然后调用方法就能看到
1 |
|
疑问#
- 同样的事件能有多个监听器 — 经过测试是可以的
- 事件监听器一定要写一个类去实现吗 — 其实是可以不需要的,spring有个注解@EventListener,修饰在方法上,稍后给出使用方法
- 事件监听操作和发布事件的操作是同步的吗? — 是的,所以如果有事务,监听操作也在事务内
使用@EventListener注解#
先给出代码
1 2 3 4 |
|
EventListener这个注解其实可以接受参数来表示事件源的,有两个参数classes和condition,顾明思议前者是表示哪一个事件类,后者是当满足什么条件是会调用该方法,但其实都可以不用用到,直接在方法上写参数HelloEvent就行
出处:https://www.cnblogs.com/itplay/p/10982072.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234122.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...