当前位置: 首页 > 图灵资讯 > 技术篇> 【Spring | 事件监听概述】

【Spring | 事件监听概述】

来源:图灵教育
时间:2023-08-08 17:45:05

本文简要介绍了Spring事件监控机制。

(事件监听)

概述

  ApplicationContext事件处理是通过的ApplicationEvent 类和ApplicationListener提供接口。如果将实现这一点。 ApplicationListener 接口的 bean 在上下文中部署,所以每当 ApplicationEvent 发布到 ApplicationContext 时间,会通知这个 bean。本质上,这是一种标准的观察者设计模式。

  Spring 的 ApplicationContext 容器内的所有事件类型都是从继承的org.springframework.context.ApplicationEvent,容器中的所有监听器都实现了org.springframework.context.ApplicationListener接口,以及bean 在容器中注册。一旦在容器中发布 ApplicationEvent 及其子类型事件,注册为容器 ApplicationListener 将处理这些事件。

提示:  从 Spring 4.2 一开始,事件基础设施得到了显著改善,并提供了基于注释和发布任何事件的模型(即不一定是从ApplicationEvent扩展对象)的能力。当这样的对象被发布时,我们将为您包装在事件中。

Spring 标准事件:

事件说明contextrefreshedevent的初始化或刷新ApplicationContext时间发布(例如通过ConfigurableApplicationContext接口使用 refresh() 方法)。在这里,“初始化”意味着加载所有bean、检测和激活后处理器bean、预实例化单例和ApplicationContext 对象已经可以使用了。只要上下文没有关闭,就可以多次触发刷新,前提是选择了ApplicationContext 实际上支持这种“热”刷新。例如XmlWebApplicationContext但是,支持热刷新 GenericApplicationContext 不支持。使用contextstartedevent。ConfigurableApplicationContext接口上的start() 方法 启动ApplicationContext不时发布。在这里,“started意味着所有的Lifecyclele bean 都收到显式启动信号。通常,该信号用于在显式停止后重新启动 Bean,但也可用于启动尚未配置为自动启动的组件(如初始化时尚未启动的组件)。Contextstopedevent使用ConfigurableApplicationContext接口上的 stop() 方法 停止 ApplicationContext不时发布。在这里,“stopped意味着所有的Lifecyclele bean 都收到了显式停止信号。停止的上下文可以通过 调用start()重新启动。ContextClosedevent用于使用。ConfigurableApplicationContext接口上的 close()方法或通过 JVM shutdown 挂钩关闭 ApplicationContext时发布。这里,“closed所有单例都意味着 bean 将被销毁。上下文一旦关闭,就会达到生命周期的终点,无法刷新或重新启动。Requesthandledevent是特定的 Web 通知所有事件 Bean 已处理 HTTP 请求。该事件在请求完成后发布。该事件仅适用于使用 Spring 的DispatcherServlet 的web ServletRequestHandledEventRequestHandledEvent 用于添加特定于特定于添加的子类Servlet 上下文信息。

Spring事件机制涉及以下四个重要类别:

  • ApplicationEvent:抽象类是所有Spring事件的父类。

  • ApplicationListener:基于标准java的EventListener接口,实现了事件监听器的所有事件监听器接口。

  • ApplicationEventMulticaster:事件经理,管理监听器和发布事件,Applicationcontext通过委托Applicationeventmulticaster来访 发布事件。

  • ApplicationEventPublisher:该界面包装了与事件相关的公共方法,也受到了委托 Applicationeventmulticaster完成事件发布。

在这里插入图片描述

  如果你喜欢,欢迎