最近做的收银自助机项目中,在自助机实际使用的时候扫描的商品多了会感觉程序执行很慢,于是就开始分析找原因,因为我们的商品库中的商品实际上是没有商品的,当用户扫描完商品进行下单核验的时候会将商品数据传至后台,后台会将我们自己商品库中没有的商品存储到我们的商品库中,存储没有的商品的时候使用到了spring 提供的ApplicationEvent事件处理功能,该功能其实就是观察者模式的实现,当我们执行一个比较耗时而并不关键的操作(比如上报监控信息什么的),如果同步执行必然是没有意义的,因此一般我们会想去异步处理,通常会使用MQ之类的中间件,不过Spring也提供了事件相关的处理,就是ApplicationEven,不过有一个问题需要注意的是,默认这种事件机制是同步的,好处是如果有事务,发送事件的方法和事件处理的方法在同一个事务里,缺点就是,可能并没有实现我们想象中的异步处理,有一种方案是在处理事件的时候使用一个线程池,通过线程池来异步处理,虽然是解决了异步的问题,但是给笔者一种脱裤子放屁的赶脚,与其这样,还不如直接扔到一个线程池里,何必还走一个事件处理?好在Spring本身也支持ApplicationEvent的异步处理,通过@Async注解就可以了。在监听器方法onApplicationEvent(ApplicationEvent event)前加一个@Async注解即可。
具体可参考:https://blog.csdn.net/thekenofDIS/article/details/79893301
相关推荐
Spring的ApplicationEvent事件和监听器的测试工程,演示了如何使用Spring中的事件和监听器内容。完整的maven工程,能够运行。
这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器(ApplicationEventMulticaster)三个主要组成部分构成。 事件是发生的动作或事情,其核心是ApplicationEvent...
当某个特定的事件发生时,ApplicationEvent 对象会被创建并发布到 ApplicationContext 中,所有注册监听该事件的监听器就会收到通知并执行相应的操作。 ApplicationEvent 是一个泛型类,可以用来传递任何类型的数据...
Spring使用ApplicationEvent和ApplicationListener两个核心接口实现了事件监听机制。开发者可以自定义事件类和事件监听器,并通过应用程序上下文的publishEvent方法来发布事件,Spring框架会自动分发事件给所有对该...
Spring的ApplicationEvent事件和监听器的测试工程,演示了如何使用Spring中的事件和监听器内容。
主要介绍了详解SpringBoot 发布ApplicationEventPublisher和监听ApplicationEvent事件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
用户需要通过邮箱验证码来登录,直接的做法无非是直接在项目中的登录服务里调用邮件服务,通过应用ApplicationEvent可以对这样一个调用解耦,改为在登录服务中发布一个邮箱登录事件,Listener监听后发送邮件。
日志通过ApplicationEvent、Annotation、MQ实现公用逻辑
事件-默认情况下-是同步的。 这具有一些优点-例如,侦听器能够参与发布者的交易环境。 @TransactionalEventListener批注是@EventListener的扩展,它允许将事件的侦听器绑定到事务的某个阶段。 可以绑定到以下事务...
delphi ApplicationEvents用法和源码实例,在delphi程序中, 当在一个窗口上放置一个ApplicationEvents控件时,Application将会把所有的事件都转寄到ApplicationEvents; ApplicationEvents是用来捕获程序级事件的,也...
1.ApplicationEvent:表示事件本身,自定义事件需要继承该类 2.ApplicationEventPublisherAware:事件发送器,需要实
主要介绍了Spring 事件Application Event原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
需要继承ApplicationEvent 监听器【处理事件】MessageEventListener 需要实现ApplicationListener<事件源> 异步 需要监听器方法加@Async 主类@EnableAsync mongodb的使用示例 很多小的用例目前包括: 锁 线程 另...
SpringBoot 中发布ApplicationEventPublisher,监听ApplicationEvent 异步线程池操作
内容:中介者模式、观察者模式/监听者模式实现,用来消息发送和消息处理的解耦,以单播和多播形式同步或异步的模式发布消息,创建和帧听事件。 能学到:ApplicationContext、ApplicationEvent、ApplicationListener...
太复杂的功能记录大概流程, 一些重要点注释实现细节和补充一些使用的例子spring 源码阅读记录IOCAOPMVCSpringMVC源码分析spring 实战设计模式结合spring的策略模式结合spring的管道模式特性实践spring事件机制-...
使用容器发布事件 Spring高级话题 Spring Aware BeanNameAware BeanFactoryAware ApplicationContextAware MessageSourceAware ApplicationEventPublisherAware ResourceLoaderAware 多...
java实现观察者设计模式,利用ApplicationListener和ApplicationEvent。Test包里有测试代码
import com.apple.eawt.Application; import com.apple.eawt.ApplicationAdapter; import com.apple.eawt.ApplicationEvent;
ApplicationEvent ApplicationEventMulticaster ApplicationEventPublisher ApplicationEventPublisherAware ApplicationListener ApplicationObjectSupport ArgPreparedStatementSetter ...