`
bolinyang
  • 浏览: 74353 次
  • 性别: 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内置了多种事件类型,例如,ContextRefreshedEvent在容器刷新时发布,ContextStartedEvent在容器启动时发布,而ContextClosedEvent在容器关闭时发布。除此之外,Spring也支持自定义事件,提供灵活性来处理特定...

    深度解析spring容器管理bean

    使用了dom4j相关包,spring通过反射机制实现bean的创建等,完成bean的管理

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

    主要介绍了Spring容器扩展机制的实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    深入解析Spring IoC源码:核心机制与实践应用

    本文深入探讨了Spring框架中IoC容器的源码机制,涵盖了容器的初始化、Bean工厂的实例化、Bean定义的读取及Spring Bean的生命周期管理。通过精细的分析,本文揭示了AnnotationConfigApplicationContext的实例化过程,...

    Spring技术内幕:深入解析Spring架构与设计原理

    一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...

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

    背景消息机制是使用消息通知的方式,解耦生产者与消费者。编程上体现的是职责分割,使得消息处理的扩展性得到增强,符合设计原则中的单一职责以及开闭原则。Java 提供

    spring接管JUnit

    接管JUnit资源是指Spring框架为了方便进行单元测试,在测试类中提供了自动装配和依赖注入的功能,使得测试类能够轻松地使用Spring容器中的Bean和依赖。这样,我们可以在测试类中使用Spring的依赖注入机制来注入所需...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    12.2.2. 在Spring容器中创建 SessionFactory 12.2.3. The HibernateTemplate 12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的...

    Spring技术内幕:深入解析 Spring架构与设计原理.pdf

    第一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex...

    Spring+3.x企业应用开发实战光盘源码(全)

     第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们还将对Spring容器一些高级主题进行深入的阐述。  第6章:我们从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的...

    深入解析Spring IoC:源码与实践指南

    这包括从AnnotationConfigApplicationContext的实例化开始,到DefaultListableBeanFactory工厂的建立,再到AnnotatedBeanDefinitionReader的初始化,这一系列过程共同构成了Spring容器的加载核心。同时,本文还探讨...

    Spring详细学习资料下载

    Spring的DI机制降低了业务对象替换的复杂性 spring不依赖于web容器,独立于各种应用服务器, Write Once,Run Anywhere(一次编译到处运行) 高度开放性:Spring并不完全依赖于Spring,开发者可自由选用Spring框架...

    Spring Boot中的@Scheduled注解:定时任务的原理与实现

    本文将详细探讨Spring Boot中@Scheduled注解的...当Spring容器启动时,它会扫描所有带有@Scheduled注解的方法,并将它们注册到任务调度器中。任务调度器会根据注解中指定的时间间隔或Cron表达式来触发相应的方法执行。

    Spring技术内幕:深入解析Spring架构与设计原理(第2部分)

     Spring如何在Web环境中集成IoC容器并为Web应用开发提供利器?  我们耳熟能详的MVC模式在Spring中是如何实现的?  Spring MVC如何灵活地集成各种丰富的视图展现方案?  Spring实现远端调用的方案有很多种,你...

    SPRING3技术内幕

     Spring如何在Web环境中集成IoC容器并为Web应用开发提供利器?  我们耳熟能详的MVC模式在Spring中是如何实现的?  Spring MVC如何灵活地集成各种丰富的视图展现方案?  Spring实现远端调用的方案有很多种,你...

    开源框架 Spring Gossip

    管理 Bean 从第一个 Spring 应用程式开始,逐步了解何谓依赖注入,以及如何使用 Spring 的容器功能来管理 Bean,了解 Bean 在 Spring 容器中的生命周期。 第一个 Spring 程式 BeanFactory、 ...

    Spring技术内幕:深入解析Spring架构与设计原理 1/2

     spring如何在web环境中集成ioc容器并为web应用开发提供利器?  我们耳熟能详的mvc模式在spring中是如何实现的?  spring mvc如何灵活地集成各种丰富的视图展现方案?  spring实现远端调用的方案有很多种,你...

    高级开发spring面试题和答案.pdf

    spring 三种注入(就是从spring容器中将bean放入对象属性值中) Spring下描述依赖关系@Resource, @Autowired和@Inject的区别与联系 Spring中BeanFactory和ApplicationContext的区别 谈谈Spring IOC的理解,原理与...

Global site tag (gtag.js) - Google Analytics