`
bolinyang
  • 浏览: 75356 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring容器中的事件机制

阅读更多
一.事件机制的概述

我们知道ApplicationContext和BeanFactory相比增加了容器的事件机制,关于事件机制是一个很常用的技巧,不仅在Spring中使用了这种机制,而且在Javascript中也有这种机制,我个人觉得时间机制是用来解决模块与模块之间的通信的,A模块把事件a注册到B模块的事件处理中心中,这时B模块触发a事件,A就会感知到事件a被模块B触发了,然后模块A做一些事情来响应这个事件,这样就实现了模块A和模块B之间的一次通信。回到Spring中,我们给容器中注册一些事件的监听,当容器刷新的时候,这些事件就会被容器的事件中心广播出去,然后相应的事件监听处理函数会进行一些处理。从而在容器启动的时候引入了一些我们自己的操作,从这个角度出发,我们可以认为事件的出现也是Spring容器暴露出来的一个扩展点。

二.一个和事件有关的主要接口
public interface ApplicationEventMulticaster {
    /** 增加一个事件监听 **/
    void addApplicationListener(ApplicationListener listener);
    /** 删除一个事件件监听 **/
    void removeApplicationListener(ApplicationListener listener);
    /** 删除所有的事件监听 **/
    void removeAllListeners();
    /** 事件监听的广播,这样相关事件监听就会进行响应 **/
    void multicastEvent(ApplicationEvent event);
}

三.事件处理的核心类图

四.事件处理的核心流程

五.事件机制思想的灵活使用

在平时开发的过程中可能很少会给Spring容器去注册事件来实现需求,简单的说就是在Spring容器启动的时刻去做一些事情,这些事情是有程序员自己来做,由Spring容器来触发,还有在一些基于Spring框架创造的框架中这种事件机制的理念一般都会出现。此外,事件机制前面也说了,不只是JAVA中有这个理念,其他一些编程语言中都有事件的思想,对于一些复杂模块之间的通信,使用事件机制来编写代码可能会更加好维护一些,这些模块之间通过事件的注册和触发来进行通信,此时事件的理念可以说是一个不错的选择,特别是jQuery中本身有很多事件的封转,同时又可以让程序员定义一些自己的事件,然后自己触发等等,所以在使用jQuery开发前端代码的时候,如果前端模块之间需要通信,而且比较复杂,这里的复杂意思是指模块与模块之间的通信不是单纯的1对1而是1对多或者多对多的情形,关于事件机制需要我们在平时开发中慢慢去感悟,慢慢去找合适的场景来使用。
  • 大小: 44.4 KB
  • 大小: 103.4 KB
分享到:
评论

相关推荐

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    Spring简单模拟Spring容器

    标题中的“Spring简单模拟Spring容器”意味着我们将探讨Spring框架的核心特性——IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),以及如何通过编程方式模拟Spring容器的工作原理。...

    简单Spring容器实现

    下面,我们先来理解Spring容器的核心概念,然后逐步探索其内部机制,并通过一个名为"MySpring"的压缩包文件中的示例代码来实践这一过程。 1. **Spring容器核心概念** - **依赖注入(Dependency Injection, DI)**...

    深度解析spring容器管理bean

    "深度解析spring容器管理bean"这一主题,旨在深入理解Spring如何通过反射机制、依赖注入(DI)以及XML或Java配置来实现对Bean的生命周期管理。 首先,Spring容器主要有两种类型:DefaultListableBeanFactory和...

    spring容器学习笔记

    初始化和销毁方法在 Spring 容器中,我们可以通过配置来指定 Bean 在被创建后或销毁前需要执行的方法。...同时,Spring 容器还提供了国际化支持、资源访问、事件机制等功能,极大地简化了企业级应用的开发。

    Spring通过在classpath自动扫描方式把组件纳入spring容器中管理

    在Spring框架中,自动扫描(Auto-Component Discovery)是一种便捷的方式,它允许开发者无需显式配置每个bean,就能将类路径下(classpath)的特定包及其子包中的组件(即带有特定注解的类)纳入Spring容器进行管理...

    普通对象使用spring容器中的对象的实现方法

    在这个实现方法中,我们可以使用spring框架提供的依赖注入机制来将spring容器中的对象注入到普通对象中,从而实现对spring容器中的对象的使用。 实现方法的主要思想是使用spring框架提供的ApplicationContextAware...

    spring容器的触发事件 ClassPathXmlApplicationContext的start()方法的用法

    通过以上的示例代码和分析,我们可以了解到 Spring 容器中的事件触发机制是如何工作的。通过使用 `ClassPathXmlApplicationContext` 类和事件监听器,开发者可以轻松地扩展应用的功能,同时也能更好地理解和控制 ...

    自己实现的简单Spring 容器

    Spring容器支持发布和订阅事件,例如在Bean的生命周期事件(如初始化、销毁)中,可以定义监听器来响应这些事件。在"MySpring"中,可以创建一个事件接口和对应的监听器接口,然后让感兴趣的Bean实现这些接口来处理...

    event.rar-Spring事件监听机制

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

    Spring实现原理及IoC容器的优点

    Spring容器通过反射机制实例化对象,解析并注入依赖。这样的设计允许我们轻松地更改对象的行为,只需调整配置,无需修改代码。 接下来,让我们看看Spring的IoC容器有哪些优点: 1. **松耦合**:由于对象的创建和...

    Spring中ApplicationContext加载机制

    Spring中ApplicationContext加载机制 ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供...

    mybatis注册到spring容器代码

    - 使用`PlatformTransactionManager`接口的实现,如`DataSourceTransactionManager`,并将其注册到Spring容器中。 5. **扫描Mapper接口** - 通过`MapperScannerConfigurer`或`@MapperScan`注解,扫描包含MyBatis ...

    Spring容器扩展机制的实现原理

    Spring容器扩展机制的实现原理 Spring框架的核心组件之一是IoC容器,它负责管理容器中所有bean的生命周期。在bean生命周期的不同阶段,Spring提供了不同的扩展点来改变bean的命运。这些扩展点使得开发者可以在容器...

    11 spring IoC容器中事件event消息的发送和接收内部工作原理揭秘慕课专栏1

    在Spring框架中,事件(event)机制是一种用于解耦生产者和消费者的重要设计,它遵循了设计原则中的单一职责和开闭原则,增强了系统的扩展性。Java提供了两种消息通知方式:观察者模式和监听器模式。 观察者模式下,...

    Spring的IoC容器初始化源码解析

    它是所有Spring容器的基类,为其他容器提供了基本的服务和功能。 ##### 3.2 ApplicationContext介绍 `ApplicationContext`是在`BeanFactory`基础上的增强版本,除了继承了`BeanFactory`的所有功能之外,还提供了...

    spring 源码中文注释

    在源码中,`BeanFactory`和`ApplicationContext`接口是IoC容器的主要代表,前者是基础版本,后者提供了更多的企业级特性,如事件发布、国际化支持等。 接着,AOP是Spring的另一大特色。AOP允许开发者定义“切面”,...

    Spring容器研究.pdf

    ### Spring容器研究 #### 一、依赖注入 依赖注入(Dependency Injection, DI)是一种软件设计模式,用于降低组件间的耦合度。通过依赖注入,组件之间的依赖关系可以在运行时由容器来决定,而不是在编译期间硬编码...

    浅谈spring容器中bean的初始化

    在Spring框架中,Bean的初始化是一个关键的概念,它涉及到Bean的生命周期管理以及Spring容器如何创建、配置和管理这些Bean。本文将深入探讨Spring容器中Bean的初始化过程。 首先,Spring容器根据XML配置文件(如`...

Global site tag (gtag.js) - Google Analytics