spring源码学习(七)监听器与监听事件

在spring中监听器与监听事件用到了观察者的设计模式,但是又与简单的观察者模式不同,他分的角色更多,主要是实现解耦的目的

 

具体执行步骤:

  1、事件源发布不同的事件

  2、当发布时间之后会调用多播器的方法来进行事件广播,由多播器来触发具体的监听器去执行具体的事件

  2、当监听器收到具体的事件之后,可以验证匹配是否能处理当前事件,如果可以处理,那么执行操作;如果不能处理直接跳过

 

代码实现:

  1、准备多个事件,spring里ApplicationEvent有多个子类实现包括我们自定义的事件MyEvent

  2、准备好多个监听器,spring中ApplicationListener有多个子类实现,包括我们自定义的MyLisenter

  3、初始化多播器initApplicationEventMulticaster()

  refresh方法中initApplicationEventMulticaster实现初始化多播器,方法实现很简单:先在beanFactory中找是否存在多播器对象,如果存在什么都不做;如果不存在,则创建一个多播器SimpleApplicationEventMulticaster并注册到beanFactory中

  4、向多播器中注册监听器对象registerListeners

    如同注册bfpp和bpp一样在从容器中拿到监听器beanNames集合,再依次向多播器中注册

 

  5、准备事件发布,来通知多播器进行相关逻辑处理

    事件发布需要由上下文来进行发布,所以在我们自定义的bean中织入了一个上下文对象来进行事件发布,事件处理也很简单,简单打印对象被创建了

 

   发布事件:

    1)、拿到多播器,调用多播器的事件处理方法

  

    2)、找到所有的监听器,循环遍历执行

 

 

执行结果:

 

posted @   搬砖党路过  阅读(368)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示