spring事件监听
ApplicationListener监听容器中发布的事件
实现ApplicationListener来完成事件监听
1 | public interface ApplicationListener<E extends ApplicationEvent> extends EventListener { |
spring中定义的事件
Spring 提供了以下 5 中标准的事件:
上下文更新事件ContextRefreshedEvent
该事件会在ApplicationContext 被初始化或者刷新时发布。也可以在调用 ConfigurableApplicationContext 接口中的 refresh()方法时被触发
上下文开始事件ContextStartedEvent
当容器调用ConfigurableApplicationContext的 Start()方法开始/重新开始容器时触发该事件
上下文停止事件ContextStoppedEvent
当容器调用 ConfigurableApplicationContext的 Stop()方法停止容器时触发该事件
上下文关闭事件ContextClosedEvent
当容器调用 ConfigurableApplicationContext的close()方法关闭ApplicationContext时触发该事件。容器被关闭时,其管理的所有单例 Bean 都被销毁
请求处理事件RequestHandledEvent
在 Web 应用中,当一个 http 请求(request)结束触发该事件
spring的事件处理是单线程的,当事件被发布时,该进程会阻塞直到所有的接收者得到该消息
自定义事件监听器
可以实现ApplicationListener来自定义事件,如果一个 bean 实现了 ApplicationListener 接口,当一个 ApplicationEvent 被发布以后,bean 会自动被通知
1 |
|
事件需要继承ApplicationEvent
1 | public class UserEvent extends ApplicationEvent { |
可以使用publishEvent方法来发布事件
1 | ApplicationContext context = new AnnotationConfigApplicationContext(MainConfig4.class); |