ApplicationEventPublisher异步处理事件

ApplicationEventPublisher异步处理事件

ApplicationEventPublisher是一个标准的观察者模式,好处我认为就是可以把业务分离开,也可以通过异步来发送Event,这样主流程就不用关系Event中具体啥时候做了啥事,主流程只发布个Event就可以了,也不会阻塞主流程的进行,比如记录日志操作,或者调用一个第三方接口这种有时间消耗的操作都可以交给Listener慢慢儿处理(有点像新建了个线程)。

1、创建Event集成ApplicationEvent

在这里插入图片描述
参数为Event中想要携带的数据,比如:
在这里插入图片描述
可以根据需要随意写

2、在需要发布Event的位置注入ApplicationEventPublisher

在这里插入图片描述

3、构造Event、参数、发布Event

在这里插入图片描述

4、创建监听类实现ApplicationListener接口,监听Event,泛型为刚刚发布的Event

在这里插入图片描述

5、实现onApplicationEvent方法处理业务

在这里插入图片描述

6、启动类开启异步处理

在这里插入图片描述

7、测试一下

项目中通过切面切入每个Controller,并且记录用户的操作日志,同时异步发送给Syslog服务器和记录在本地数据库,其中入库和发送Syslog交给Listener处理。

随便来个登陆操作:
在这里插入图片描述
切面中获取到了用户具体的操作、IP、balabala…
在这里插入图片描述
检查下数据库和syslog数据库有没有数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38045214/article/details/114081630
今日推荐