Spring 中的事件机制
在 Spring 容器中通过ApplicationEven类和ApplicationListener(@EventListener)接口来实现事件监听机制,每次Event 被发布到Spring容器中时都会通知该Listener。需要注意的是,Spring 的事件默认是同步的,调用 publishEvent 方法发布事件后,它会处于阻塞状态,直到Listener接收到事件并处理返回之后才继续执行下去。利用 Spring 提供的线程池注解 @Async 来实现异步线程,使用 @Async 之前需要先开启线程池,在 启动类上添加 @EnableAsync 注解即可。
指定监听器的顺序
监听器的发布顺序是按照 bean 自然装载的顺序执行的,Spring 支持两种方式来实现有序
一、实现SmartApplicationListener接口指定顺序。
实现SmartApplicationListener接口,并指定getOrder的返回值,返回值越小,优先级越高。