`
买切糕的猴子
  • 浏览: 23492 次
社区版块
存档分类
最新评论

Spring架构揭秘-事件监听机制

阅读更多
一、事件监听机制概述
二、事件监听机制结构
三、Spring监听机制架构
  
     Spring的Application拥有发布事件并且注册事件监听器的能力,拥有一套完整的事件发布和监听机制。在Java中,通过java.util. EventObject来描述事件,通过java.util. EventListener来描述事件监听器,在众多的框架和组件中,建立一套事件机制通常是基于这两个接口来进行扩展。
   在一个事件体系中,有以下几个重要的概念。
1、事件源:事件对象的产生者,任何一个EventObject都有一个来源
2、事件监听器注册表:当事件框架或组件收到一个事件后,需要通知所有相关的事件监听器来进行处理,这个时候就需要有个存储监听器的地方,也就是事件监听器注册表。
3、事件广播器:事件广播器在整个事件机制中扮演一个中介的角色,当事件发布者发布一个事件后,就需要通过广播器来通知所有相关的监听器对该事件进行处理。
下图就是事件机制的结构图
Spring事件发布机制
     在Spring中,事件机制大概也是这么个结构,具体的实现采用观察者模式。下面我们来看看Spring的事件机制设计类图
1、ApplicationEventPublisher是Spring的事件发布接口,事件源通过该接口的pulishEvent方法发布事件。
2、ApplicationEventMulticaster就是Spring事件机制中的事件广播器,它默认提供一个SimpleApplicationEventMulticaster实现,如果用户没有自定义广播器,则使用默认的。它通过父类AbstractApplicationEventMulticaster的getApplicationListeners方法从事件注册表中获取事件监听器,并且通过invokeListener方法执行监听器的具体逻辑
3、ApplicationListener就是Spring的事件监听器接口,所有的监听器都实现该接口,本图中列出了典型的几个子类。其中RestartApplicationListnener在SpringBoot的启动框架中就有使用
4、在Spring中通常是ApplicationContext本身担任监听器注册表的角色,在其子类AbstractApplicationContext中就聚合了事件广播器ApplicationEventMulticaster和事件监听器ApplicationListnener,并且提供注册监听器的addApplicationListnener方法。

 

     通过上图就能较清晰的知道当一个事件源产生事件时,它通过事件发布器ApplicationEventPublisher发布事件,然后事件广播器ApplicationEventMulticaster会去事件注册表ApplicationContext中找到事件监听器ApplicationListnener,并且逐个执行监听器的onApplicationEvent方法,从而完成事件监听器的逻辑。
  • 大小: 83.4 KB
  • 大小: 33.5 KB
0
0
分享到:
评论

相关推荐

    spring-framework-master

    通过阅读和分析"spring-framework-master",开发者可以深入理解Spring的工作机制,提升自己的编程技巧,同时也可以根据需求自定义扩展,使Spring更好地服务于项目需求。这不仅对于Java开发者,对于所有希望深入学习...

    spring-aop-3.0.xsd spring-beans-3.0 spring-context-3.0.xsd spring-mvc-3.1.xsd

    `spring-context-3.0.xsd` 文件包含了在上下文环境中配置的各种元素,如消息源、事件监听器、AOP 配置、bean 的工厂方法等。这个文件对于实现高度自定义的 Spring 应用程序非常重要。 4. **spring-mvc-3.1.xsd**: ...

    spring导入eclipse时少的spring-cglib-repack-3.2.4.jar和spring-objenesis-repack-2.4.jar

    然而,有时候在导入Spring项目时,可能会遇到一些问题,例如标题中提到的"spring-cglib-repack-3.2.4.jar"和"spring-objenesis-repack-2.4.jar"这两个jar包的缺失。这些jar包对于Spring框架的正常运行至关重要,因为...

    spring-cglib-repack-3.2.0.jar和spring-objenesis-2.2.jar

    标题 "spring-cglib-repack-3.2.0.jar" 和 "spring-objenesis-2.2.jar" 指的是两个在Spring框架源代码构建过程中常用的库。这两个库在Spring框架的运行和开发中起着至关重要的作用。 首先,让我们详细了解一下...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    这里提到的是一组完整的Spring库,包括`spring-core`、`spring-context`、`spring-webmvc`、`spring-web`、`spring-beans`、`spring-test`、`spring-jdbc`、`spring-orm`、`spring-aop`和`spring-tx`,它们都是3.2.0...

    spring-5.3.9-dist.zip(spring-framework-5.3.9)

    每个模块都有相应的jar包,例如`spring-context.jar`提供了上下文支持,`spring-beans.jar`处理bean的生命周期,而`spring-webmvc.jar`则用于构建Web应用程序。5.3.9版本的库可能包含了对Java 8及更高版本的支持,...

    spring-framework-4.1.6.RELEASE.rar

    spring-aop-4.1.6.RELEASE.jar spring-aspects-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-context-support-4.1.6.RELEASE.jar spring-core-4.1.6.RELEASE.jar ...

    event.rar-Spring事件监听机制

    在Spring框架中,事件监听机制是一种非常重要的组件间通信方式,它允许应用程序的不同部分通过发布和订阅事件来进行异步通信。这种模式使得组件之间松耦合,提高了代码的可维护性和可扩展性。下面我们将详细探讨...

    深入探索Spring事件监听机制:技术与应用

    Spring事件监听机制是Spring框架中的一个重要特性,它基于经典的观察者模式,允许应用程序组件之间进行松耦合的通信。在Spring中,事件监听机制由三部分组成:事件(ApplicationEvent)、事件监听器(Application...

    spring-beans-3.0.xsd

    《Spring框架中的beans配置文件详解——以spring-beans-3.0.xsd和3.1.xsd为例》 在Spring框架中,`spring-beans`是核心组件之一,它负责管理对象的生命周期和依赖关系。`spring-beans`的配置文件通常以`.xsd`为后缀...

    spring-data-redis 1.7.6

    7. **事件监听**:Spring Data Redis支持事件监听,可以监听Redis中的某些操作(如键的创建、删除等),并在应用程序中进行相应的处理。 8. **脚本支持**:通过`ScriptOperations`,开发者可以执行Lua脚本,这在...

    spring 3.2.4.RELEASE jar包

    spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-3.2.4.RELEASE.jar spring-webmvc-...

    spring4源码所需要的spring-objenesis-repack-2.1.jar,spring-cglib-repack-3.1.jar

    在Spring框架中,`spring-objenesis-repack-2.1.jar`和`spring-cglib-repack-3.1.jar`是两个关键的依赖库,它们在Spring的内部工作原理和功能扩展中扮演着重要角色。让我们深入探讨这两个库以及它们与Spring 4的关系...

    Spring-session2整合spring5+redis

    描述中的“spring5+hibernate5+Spring-session-data-redis2+Spring-data-redis2整合”进一步扩展了集成环境,引入了Hibernate 5作为ORM(对象关系映射)工具,Spring-session-data-redis和Spring-data-redis2则是...

    官方原版spring-framework-4.3.18.RELEASE.zip

    "spring-framework-4.3.18.RELEASE-schema.zip"文件提供了Spring配置文件所使用的XML架构定义。这些架构文件定义了Spring XML配置中可以使用的元素和属性,帮助开发者编写正确的配置,确保XML配置文件的语法正确。 ...

    spring-cglib-repack-3.2.6.jar,spring-objenesis-repack-2.6.jar

    2018-02-08从git_hub上拉取的Spring源码打成的jar,构建Spring-beans5.0以上源码所缺失的两个jar包spring-cglib-repack-3.2.6.jar,spring-objenesis-repack-2.6.jar

    spring-data-commons-1.8.0.RELEASE

    spring data jpa的包。spring-data-commons-1.8.0.RELEASE.jar

    spring-data-commons-1.7.2.RELEASEspring-data-jpa-1.5.2.RELEASE-java datajpa

    这两个模块的 jar 文件,`spring-data-commons-1.7.2.RELEASE.jar` 和 `spring-data-jpa-1.5.2.RELEASE.jar`,包含了它们各自的功能实现和依赖。在实际项目中,将这些 jar 文件添加到类路径,就可以利用 Spring Data...

    spring-context-support.jar

    spring-context-support.jar spring整合任务调度quartz必需jar 还需要quartz-all-x.x.x.jar quartz版本必需在1.8.x以下

    springMVC集成spring-data-redis

    在这个"springMVC集成spring-data-redis实现发布订阅"的项目中,我们可能涉及以下关键知识点: 1. **Spring Boot**:通常,为了简化配置和快速启动,我们会使用Spring Boot,它是Spring Framework的一个扩展,提供...

Global site tag (gtag.js) - Google Analytics