首页 > 其他分享 >【Spring | 事件监听概述】

【Spring | 事件监听概述】

时间:2023-08-08 16:31:54浏览次数:34  
标签:ApplicationContext Spring 接口 bean 概述 事件 监听 ApplicationEvent

本篇主要对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”意味着所有Lifecycle bean 都收到显式的启动信号。通常,此信号用于在显式停止后重新启动 Bean,但它也可用于启动尚未配置为自动启动的组件(例如,初始化时尚未启动的组件)。
ContextStoppedEvent 使用ConfigurableApplicationContext接口上的 stop() 方法 停止 ApplicationContext时发布。这里,“stopped”意味着所有Lifecycle bean 都收到显式停止信号。停止的上下文可以通过 调用start()重新启动。
ContextClosedEvent 当使用ConfigurableApplicationContext接口上的 close()方法或通过 JVM shutdown 挂钩关闭 ApplicationContext时发布。这里,“closed”意味着所有单例 bean 将被销毁。一旦上下文关闭,它就达到了生命周期的终点,并且无法刷新或重新启动。
RequestHandledEvent 一个特定于 Web 的事件,通知所有 Bean 已处理 HTTP 请求。该事件在请求完成后发布。此事件仅适用于使用 Spring 的DispatcherServlet 的web 应用程序
ServletRequestHandledEvent RequestHandledEvent 的子类,用于添加特定于Servlet 的上下文信息。

Spring事件机制涉及的重要的类主要有以下四个:

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

  • ApplicationListener:事件监听器,该接口被所有的事件监听器实现,基于标准的java的EventListener接口实现观察者模式。

  • ApplicationEventMulticaster:事件管理者,管理监听器和发布事件,ApplicationContext通过委托ApplicationEventMulticaster来 发布事件。

  • ApplicationEventPublisher:事件发布者,该接口封装了事件有关的公共方法,也是委托 ApplicationEventMulticaster完成事件发布。

在这里插入图片描述

  如果喜欢的话,欢迎 

标签:ApplicationContext,Spring,接口,bean,概述,事件,监听,ApplicationEvent
From: https://blog.51cto.com/u_16111319/7010311

相关文章

  • SpringBoot入门
    1.介绍:SpringBoot是一个基于Spring框架的开源项目,旨在简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。它通过自动......
  • 解锁Spring组件扫描的新视角
    本文分享自华为云社区《Spring高手之路10——解锁Spring组件扫描的新视角》,作者:砖业洋__。首先,我们将探讨一些Spring框架中IOC(InversionofControl)的高级特性,特别是组件扫描的相关知识。组件扫描是Spring框架中一个重要的特性,它可以自动检测并实例化带有特定注解(如@Component,......
  • SpringCloud之Eureka配置篇
    1、Eureka Client配置项(eureka.client.*)2、服务实例配置项(eureka.instance.*)3、EurekaServer配置项(eureka.server.*)4、EurekaServer集群配置(eureka.server.*)......
  • Spring Boot中使用MongoDB数据库
    本章我们来学习SpringBoot中使用MongoDB数据库,有两种使用方式,一是直接使用mongotemplate,二是新建实体相关的repository接口。引入依赖在pom.xml中加入spring-boot-starter-data-mongodb引入对mongodb的访问支持依赖,它的实现依赖spring-data-mongodb。<dependency><groupId>o......
  • Spring Boot返回Json
    我们在前面的接口示例中是直接返回的字符串如下:但是我们有时候是需要返回json对象的。SpringBoot封装了JSON解析包Jackson的功能,只需要直接返回一个实体即可实现json的格式。如下:新建实体Sex.javapackagecom.biologic.entity;publicclassSex{privateStringsex;......
  • SpringBoot配置文件和修改端口
    我们在上一篇文章中已经运行起了一个简单的基础项目并运行起来了。SpringBoot简介项目创建和运行使用但是我们发现简单版的SpringBoot项目没有配置文件,定制版的项目有一个配置文件application.properties,我们还可以发现有些SpringBoot的项目使用的是xml或者yml配置文件。那么......
  • 分布式链路跟踪springcloud-Sleuth和springcloud-Zipkin
    分布式链路跟踪springcloud-Sleuth和springcloud-Zipkin前言各大厂分布式链路跟踪系统架构对比随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分......
  • Java后端07(Spring未完成)
    Spring​ 涉及的设计模式:单例模式,简单工厂模式,代理模式,观察者模式,反射,注解。。。。。Spring配置文件文件头<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework......
  • SpringSecurity1: spring boot web 样例快速体验
    本文只讲操作实践,不讲原理,这样对于想快速搭建起一个基于SpringSecurity的Web项目的朋友们而言,比较友好。文章主要由两部分构成:快速演示样例所有账户和授权数据均基于内存,能在极短的时间内搭建和运行起来,可以快速体验SpringSecurity简易生产样例建议想参考原型,在自己工程中......
  • Java Spring MVC 图片上传操作详解
    JavaSpringMVC图片上传操作详解在现代的Web开发中,图片上传是一个非常常见的需求。而JavaSpringMVC框架则是JavaWeb开发中常用的框架之一。本文将介绍如何在JavaSpringMVC框架中实现图片上传操作。JavaSpringMVC图片上传操作详解1.创建文件上传表单首先需要在前端页面......