2019独角兽企业重金招聘Python工程师标准>>>

说在前面

本文转自“天河聊技术”微信公众号

为什么要去研究spring源码,我认为java最NX的就是我写接口你来实现,像oracle,要么就是想spring这样框架,什么框架我都可以整合你,这么NX的框架你没有想研究下源码的冲动吗。O(∩_∩)O哈哈~。

正文

事件监听器

今天介绍下,spring架构体系中的事件模型,面向事件编程可以使你的应用扩展性更好,设计更优美,更有设计感,也是解耦最常用的方式,首先看下类图。

ApplicationListener 事件监听器接口,基于观察者模式实现。

GenericApplicationListener 处理基于通用的事件监听器接口,提供了一种基于事件类型的监测,如下图

boolean supportsEventType(ResolvableType eventType);

是SmartApplicationListener的改良版本。

SmartApplicationListener 基于事件的监听器接口,如下图

boolean supportsEventType(Class<? extends ApplicationEvent> eventType);

ApplicationListenerMethodAdapter GenericApplicationListener适配器实现,如下图

public class ApplicationListenerMethodAdapter implements GenericApplicationListener {

可以看到是通过实现接口这种方式的适配器模式实现,在之前的文章有介绍,为什么实现接口这种方式比继承类这种实现扩展性更好,java是单继承,用实现接口这种方式可以间接的实现的多继承,扩展性更好。

SourceFilteringListener 基于GenericApplicationListener,SmartApplicationListener的装饰器模式实现,从指定的事件源筛选事件,调用它的委托侦听器来匹配应用程序事件对象。

GenericApplicationListenerAdapter  GenericApplicationListener适配器模式实现。

事件

ApplicationEvent 事件抽象类

ApplicationContextEvent 用于应用程序上下文的事件的基类

ContextStoppedEvent 当应用程序上下文停止时引发的事件

ContextRefreshedEvent 在ApplicationContext被初始化或刷新时引发的事件

ContextStartedEvent 当应用程序上下文启动时引发的事件

ContextClosedEvent 当应用程序上下文关闭时引发的事件

发布与订阅相关

ApplicationEventMulticaster 接口由可以管理多个ApplicationListener对象的对象实现,并向它们发布事件

AbstractApplicationEventMulticaster 提供基本的侦听器注册功能

SimpleApplicationEventMulticaster 提供基本的侦听器注册功能,忽略它不感兴趣的事件

org.springframework.context.ApplicationEventPublisherAware 任何对象希望被其运行的ApplicationEventPublisher(通常是ApplicationContext)通知的任何对象实现的接口

EventPublicationInterceptor 事件发布拦截器

ApplicationEventPublisher 封装事件发布功能的接口

说到最后

本次先介绍了大概的框架,下一篇介绍具体的实现源码解析。

转载于:https://my.oschina.net/u/3775437/blog/1801833

spring源码解析系列之事件驱动模型架构相关推荐

  1. Spring 源码解析 -- SpringWeb过滤器Filter解析

    简介 在上几篇文章中探索了请求处理相关的代码,本篇开始探索请求处理前的一些操作代码,如Filter.本篇探索Filter初始化.请求处理等相关代码. 前言 说先简单的定义相关的测试代码: 启动类: i ...

  2. Spring源码解析 -- SpringWeb请求参数获取解析

    Spring源码解析 – SpringWeb请求参数获取解析 简介 在文章:Spring Web 请求初探中,我们看到最后方法反射调用的相关代码,本篇文章就探索其中的参数是如何从请求中获取的 概览 方 ...

  3. Spring源码解析 -- SpringWeb请求映射Map初始化

    简介 在上篇文章中,大致解析了Spring如何将请求路径与处理方法进行映射,但映射相关的初始化对于我们来说还是一团迷雾 本篇文章就来探索下,请求路径和处理方法的映射,是如何进行初始化的 概览 基于上篇 ...

  4. Spring源码解析【完整版】--【bilibili地址:https://www.bilibili.com/video/BV1oW41167AV】

    [本文为bilibili视频雷丰阳的Spring源码解析的完整版总结文章,其中文章前面大部分为他人博文的搬运,后面补充了其未总结的部分] 一.Java的注解 1. 注解的概念 注释:用文字描述程序,给 ...

  5. spring源码解读系列(八):观察者模式--spring监听器详解

    一.前言 在前面的文章spring源码解读系列(七)中,我们继续剖析了spring的核心refresh()方法中的registerBeanPostProcessors(beanFactory)(完成B ...

  6. Tomcat源码解析系列二:Tomcat总体架构

    Tomcat即是一个HTTP服务器,也是一个servlet容器,主要目的就是包装servlet,并对请求响应相应的servlet,纯servlet的web应用似乎很好理解Tomcat是如何装载serv ...

  7. Spring源码解析:自定义标签的解析过程

    2019独角兽企业重金招聘Python工程师标准>>> spring version : 4.3.x Spring 中的标签分为默认标签和自定义标签两类,上一篇我们探究了默认标签的解 ...

  8. Netty 源码解析系列-服务端启动流程解析

    netty源码解析系列 Netty 源码解析系列-服务端启动流程解析 Netty 源码解析系列-客户端连接接入及读I/O解析 五分钟就能看懂pipeline模型 -Netty 源码解析 1.服务端启动 ...

  9. Mybatis3 源码解析系列

    简介 Mybatis作为一个优秀的Java持久化框架,在我们的日常工作中相信都会用到,本次源码解析系列,就开始探索下Mybatis 总结 在MyBatis的学习中,首先通读了<MyBatis3源 ...

最新文章

  1. 2022-2028年中国装配式装修行业市场研究及前瞻分析报告
  2. SAP RETAIL 基于分配表创建采购订单的时候按工厂拆分?
  3. 联合索引使用规则(转载)
  4. POJ1177矩形面积并(矩形切割+括号匹配)
  5. 深受程序员鄙视的外行语录,你都听过吗?
  6. wordpress 调整段落空两,段落间的距离
  7. 《AlphaGo世纪对决》与周志华《机器学习》观后感
  8. arch Linux添加源,在Arch Linux系统中使用Archlinuxcn源(清华源)的方法
  9. iOS开发之解析XML格式数据
  10. python能做什么项目-适合Python 新手的5大练手项目,你练了么?
  11. 学习OpenCV研究报告指出系列(二)源代码被编译并配有实例project
  12. Webmax简易入门操作手册(一)
  13. synchronized(this)和synchronized(.class)的理解
  14. 豆瓣TOP250资源搜索——油猴脚本Tampermonkey
  15. 银赛电气降低电气开关火灾危险性
  16. ftp服务器覆盖文件,ftp 覆盖 服务器 文件
  17. networkx的安装及简单用法
  18. PyFlink 教程(三):PyFlink DataStream API - state timer
  19. 学生计算机测评安排,计算机系学生综合测评细则
  20. Autocad、中望CAD自动加载程序研究(注册表法、acad.rx、acaddoc.lsp或acad.lsp)

热门文章

  1. 计算机的cpu怎么设计出来的,CPU是如何制作出来的?cpu的制造流程介绍
  2. jQuery+CSS五类验证码(字母、数字、滑动、点击)
  3. java寻宝题目,神都夜行录寻宝答题答案大全 挖宝答题答案汇总
  4. 20220227:力扣第282场周赛(上)
  5. Enjoy模板里使用layui模板引擎laytpl
  6. 关于libusb-win32开发的经验
  7. 智能一代云平台(三十七):Java技术栈
  8. SpaceX载人龙飞船意外爆炸,据称几乎被完全摧毁
  9. 照片上的人出来了!云从3D人体重建登顶三项榜单,一张照片就能生成3D形象
  10. 首个中国AI芯片收购案完成:深鉴创立2年后并入赛灵思