首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏程序那些事

    Spring5参考指南:事件Event

    Spring提供了很方便的事件的处理机制,包括事件类ApplicationEvent和事件监听类ApplicationListener。 从Spring4.2开始,提供了基于注解的事件,即事件对象不一定要从ApplicationEvent来扩展。Spring会自动将其封装成一个事件对象。 下面是Spring的标准事件描述: Event 解释 ContextRefreshedEvent 在初始化或刷新ApplicationContext时发布(例如,通过在ConfigurableApplicationContext 此事件仅适用于使用Spring的DispatcherServlet的Web应用程序。 基于注解的Event 从Spring4.2开始,您可以使用EventListener注解在托管bean的任何公共方法上注册事件侦听器。

    1.5K10发布于 2020-07-07
  • 来自专栏小工匠聊架构

    Spring5源码 - 10 Spring事件监听机制_应用篇

    ---- Spring事件概览 Spring事件体系包括三个组件:事件事件监听器,事件广播器 事件 ? Spring的内置事件中由系统内部进行发布,只需注入监听器 ContextRefreshedEvent 当容器被实例化或refreshed时发布.如调用refresh()方法, 此处的实例化是指所有的 ApplicationListener接口,泛型接口,泛型类类型就是事件类型 其次需要是spring容器托管的bean,所以这里加了@component,重写onApplicationEvent方法 - 监听到ArtisanEvent....."); event.print(); } } 方法上需要标注 @EventListener(ArtisanEvent.class),方法名任意 其次需要是spring ----------确实确实,这就是观察者模式的典型应用,那spring是怎么实现的呢? 下篇我们继续分析Spring的源码实现 ----

    41620发布于 2021-08-17
  • 来自专栏小工匠聊架构

    Spring5源码 - 11 Spring事件监听机制_源码篇

    ---- pre Spring5源码 - 10 Spring事件监听机制_应用篇 观察者模式 说了应用,那我们来看下Spring的源码是如何实现这种事件监听机制的吧 ---- 事件监听机制的实现原理[观察者模式 ,维护事件事件监听器之间的映射关系,并在事件发生时负责通知相关监听器 ---- 工作流程 Spring事件机制是观察者模式的一种实现,但是除了发布者和监听者者两个角色之外,还有一个EventMultiCaster ---- 源码解析 debug走起, Spring在ApplicationContext接口的抽象实现类AbstractApplicationContext中完成了事件体系的搭建。 ,只要实现ApplicationEventMulticaster就可以了,Spring会通过 反射的机制将其注册成容器的事件广播器,如果没有找到配置的外部事件广播器,Spring默认使用 SimpleApplicationEventMulticaster > listener : getApplicationListeners(event, type)) { //看spring 容器中是否支持线程池 异步发送事件 Executor executor

    53920发布于 2021-08-17
  • 来自专栏小工匠聊架构

    Spring5源码 - 12 Spring事件监听机制_异步事件监听应用及源码解析

    ---- Pre Spring5源码 - 11 Spring事件监听机制_源码篇 ? ---- 实现原理 Spring提供的事件机制,默认是同步的。 如果想要使用异步事件监听,可以自己实现ApplicationEventMulticaster接口,并在Spring容器中注册id为applicationEventMulticaster的Bean , 设置 Spring会遍历所有的ApplicationListener, 如果 taskExecutor 不为空,这开启异步线程执行。 ? ---- 源码解析 (反推) Spring默认的事件广播器 SimpleApplicationEventMulticaster#multicastEvent 我们分析一下 ac.publishEvent APPLICATION_EVENT_MULTICASTER_BEAN_NAME + "': using default [" + this.applicationEventMulticaster + "]"); } } } 通过源码我们知道,Spring

    1.2K20发布于 2021-08-17
  • 来自专栏小工匠聊架构

    Spring5源码 - 13 Spring事件监听机制_@EventListener源码解析

    ---- Pre Spring5源码 - 10 Spring事件监听机制_应用篇 Spring5源码 - 11 Spring事件监听机制_源码篇 Spring5源码 - 12 Spring事件监听机制_ 异步事件监听应用及源码解析 通过上面三篇文章的学习,是不是发现没有看到Spring是如何解析@EventListener注解的呢? 我们知道SmartInitializingSingleton接口是在所有的Bean实例化完成以后,Spring回调的方法。 基于接口,可以参考我的前面的博客: Spring5源码 - 10 Spring事件监听机制_应用篇 ---- 附 <异步派发和异常处理器> 如果事件派发器设置了 Executor,则异步多线程的事件派发 如果事件派发器设置了 ErrorHandler,则用异常处理器来处理异常

    1K10发布于 2021-08-17
  • 来自专栏青青天空树

    springCloud学习5(Spring-Cloud-Stream事件驱动)

    它是事件驱动的,我们不断的发送消息、接受消息、处理消息。   同样在软件世界中也不全是请求--响应模型,也会需要进行异步的消息通信。 使用消息实现事件通信的概念被称为消息驱动架构(Event Driven Architecture,EDA),也被称为消息驱动架构(Message Driven Architecture,MDA)。 使用事件驱动。组织服务发出一个异步消息。许可证服务收到该消息后清除对应的缓存。 绑定器   绑定器是 spring cloud stream 框架的一部分,它是与特定消息平台对话的 Spring 代码。 结束   看完本篇你应该已经能够在 Spring Cloud 中集成 Spring Cloud Stream 消息队列了,貌似这个也能用到普通的 spring boot 项目中,比直接集成 mq 更加的优雅

    1.6K30发布于 2019-03-22
  • 来自专栏青青天空树

    springCloud学习5Spring-Cloud-Stream事件驱动)

    它是事件驱动的,我们不断的发送消息、接受消息、处理消息。   同样在软件世界中也不全是请求--响应模型,也会需要进行异步的消息通信。 使用消息实现事件通信的概念被称为消息驱动架构(Event Driven Architecture,EDA),也被称为消息驱动架构(Message Driven Architecture,MDA)。 使用事件驱动。组织服务发出一个异步消息。许可证服务收到该消息后清除对应的缓存。 绑定器   绑定器是 spring cloud stream 框架的一部分,它是与特定消息平台对话的 Spring 代码。 结束   看完本篇你应该已经能够在 Spring Cloud 中集成 Spring Cloud Stream 消息队列了,貌似这个也能用到普通的 spring boot 项目中,比直接集成 mq 更加的优雅

    70030发布于 2019-06-21
  • 来自专栏一个执拗的后端搬砖工

    Spring事件

    Spring事件 ? 1概述 在本文中,我们将讨论如何在Spring中使用事件事件是框架中被忽视的功能之一,但也是非常有用的功能之一,并且像Spring中的许多其他能力一样,事件发布是ApplicationContext上下文提供的功能之一。 接口 2自定义事件 Spring允许创建和发布自定义事件,默认情况下是同步的,这具有一些优点,例如监听器能够参与发布者的业务上下文。 并且,如前所述,默认情况下,spring事件是同步的,doStuffAndPublishAnEvent()方法将阻塞,直到所有监听器完成事件的处理。 ContextRefreshedEvent cse) { System.out.println("Handling context re-freshed event. "); } } 5注解驱动的事件监听器

    1K50发布于 2020-11-19
  • 来自专栏JAVA体系

    Spring源码】Spring Event事件

    今天就来讲一下Spring事件机制。 2、什么是Spring Event? Spring框架中的事件是一种观察者设计模式的实现,用于在应用程序中处理各种状态变化。 事件驱动编程是一种流行的编程范式,其中组件之间的通信是通过事件(或消息)进行的。Spring事件机制允许对象在状态发生变化时发布事件,其他对象则可以订阅这些事件并在事件发生时执行特定的操作。 3、基本使用 Spring Event的使用基本有以下几个步骤:定义事件,发布事件,监听事件。 3.1、定义事件 先定义一个事件Event,继承Spring的ApplicationEvent,声明构造函数将需要传递的事件信息包装为业务事件类。 5、@TransactionalEventListener 提到事件,这里再提一个注解@TransactionalEventListener,也即感知事务,基于事件形式与事务的某个阶段进行绑定。

    94110编辑于 2024-01-25
  • 来自专栏温安适的blog

    spring,springBoot事件

    @EnableAutoConfiguration处理逻辑 4.spring,springBoot事件 5.自定义springboot starter(最晚20200726) 引言 spring事件机制, Spring事件 spring事件的API对应ApplicationEvent。它继承了ava.util.EventObject。显示调用父类构造器传递事件源。 内置事件 事件名 注释 ContextRefreshedEvent Spring应用上下文就绪事件 ContextStartedEvent Spring应用上下文启动事件 ContextStopedEvent Spring应用上下文停止事件 ContextClosedEvent Spring应用上下文关闭事件 允许泛型事件自定义,如果有兴趣可以参看: org.springframework.context.PayloadApplicationEvent Spring事件监听手段 2种监听手段 1.

    1.1K11发布于 2020-07-18
  • 来自专栏技术趋势

    spring事件

    事件监听类图 ? 事件发布者 ? <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test userEventPublisher.publish(); } } this my event this my event 代码下载:https://gitee.com/hong99/spring /issues/I1N1DF 最后 spring event事件是通过观察模式实现的。

    54140发布于 2020-09-18
  • 来自专栏架构探险之道

    Spring 容器事件

    [Spring] Spring 容器事件 ? 手机用户请横屏获取最佳阅读体验,REFERENCES中是本文参考的链接,如需要链接和更多资源,可以关注其他博客发布地址。 事件体系 事件事件监听注册表 事件广播器 顾名思义:事件源即被传播的消息体,事件监听者都需要在事件监听注册表中登记。 事件监听接口 Spring事件监听器都继承ApplicationListenner接口 ? *

    * * @author xiazhaoyang * @version V1.0.0 * @date 2019/12/8 5:52 下午 * @modificationHistory 本文主要介绍了Spring容器事件的使用方式,并提供了ApplicationListener的两个增强子类的使用比对和差异分析。

    59810发布于 2019-12-17
  • 来自专栏站长运维

    Spring源码浅析——事件和异步事件

    Spring事件体系 Spring事件体系包括以下三个主要组件: ApplicationEvent:表示应用程序中发生的事件,是一个抽象基类。 Spring事件实例 以下是一个简单的Spring事件实例,其中定义了一个自定义事件MyEvent和相应的监听器MyEventListener: 首先,定义一个MyEvent类作为自定义事件: package new SimpleApplicationEventMulticaster(); private Executor executor = Executors.newFixedThreadPool(5) ,并使用了Executors.newFixedThreadPool()方法创建了一个含有5个线程的线程池。 在Spring中,事件机制包括三个主要部分:事件事件源和监听器。

    78510编辑于 2023-11-28
  • 来自专栏玩转JavaEE

    Spring事件机制详解

    今天我们来聊一聊 Spring 中的事件机制,从用法到源码分析,我们挨个过一遍。 1. Spring 事件机制 有的小伙伴可能会觉得 Spring 中的事件机制很神奇,一个地方发消息,另一个地方收消息,跟 MQ 一样。其实,Spring 中的事件本质上就是观察者模式的应用。 事件有其便利的一面,但是用多了也容易导致混乱,所以在实际项目中,我们还是要谨慎选择是否使用 Spring 事件。 2. 简单实践 先用一个简单的案例,小伙伴们先了解一下 Spring事件的应用。 以上三个要素,事件源和事件监听器都可以有多个,事件发布器(通常是由容器来扮演)一般来说只有一个。 接下来松哥通过一个简单的案例来和小伙伴们演示一下 Spring事件的用法。 availableProcessors()); //最大线程数量 executor.setMaxPoolSize(Runtime.getRuntime().availableProcessors() * 5)

    60410编辑于 2023-12-14
  • 来自专栏玩转JavaEE

    Spring事件机制详解

    今天我们来聊一聊 Spring 中的事件机制,从用法到源码分析,我们挨个过一遍。 1. Spring 事件机制 有的小伙伴可能会觉得 Spring 中的事件机制很神奇,一个地方发消息,另一个地方收消息,跟 MQ 一样。其实,Spring 中的事件本质上就是观察者模式的应用。 事件有其便利的一面,但是用多了也容易导致混乱,所以在实际项目中,我们还是要谨慎选择是否使用 Spring 事件。 2. 简单实践 先用一个简单的案例,小伙伴们先了解一下 Spring事件的应用。 以上三个要素,事件源和事件监听器都可以有多个,事件发布器(通常是由容器来扮演)一般来说只有一个。 接下来松哥通过一个简单的案例来和小伙伴们演示一下 Spring事件的用法。 availableProcessors()); //最大线程数量 executor.setMaxPoolSize(Runtime.getRuntime().availableProcessors() * 5)

    77110编辑于 2023-12-14
  • 来自专栏JAVA乐园

    Spring 事件驱动模型

    0x01:spring事件驱动组成 spring事件驱动由3个部分组成 ApplicationEvent:表示事件本身,自定义事件需要继承该类。 Spring4.2之后,ApplicationEventPublisher自动被注入到容器中,采用 Autowired 即可获取。 ApplicationListener:事件监听器接口。 0x02:使用步骤详解 Spring中使用事件非常简单,只需要以下的几个步骤: 定义事件:继承 ApplicationEvent 定义监听:要么实现 ApplicationListener 接口,要么在方法上添加 , ArmEvent.class})指定,spring 会多次调用此方法来处理多个事件。 如果有多个监听器监听同一事件,可以在方法上使用 spring 的 @order 注解来定义多个监听器的顺序,order越小,优先级越高。

    1.9K20发布于 2021-06-25
  • 来自专栏泛泛聊后端

    Spring IoC 容器事件

    Spring容器除了提供Bean的生命周期扩展点,还需要提供容器的生命周期扩展点。容器不像bean一样是由开发者定义的。框架代码编写的时候并不知道谁会关心。 所以Spring采用的方式是将容器的生命周期通过事件机制发布出来,关心事件的开发者自行订阅。这是一个观察者模式的典型应用。 场景 看一个简单的场景。 解决 Spring容器提供了容器的事件机制,能够监听容器的生命周期事件。只需要实现ApplicationListener接口。 Spring容器事件是一个典型的观察者模式,它提供了一种容器的扩展机制。 BlackListEvent event) { // notify appropriate parties via notificationAddress... } } 其他的事情是由Spring

    67440发布于 2020-07-20
  • 来自专栏JavaQ

    Spring事务事件监控

    本文首先会使用实例进行讲解Spring事务事件是如何使用的,然后会讲解这种使用方式的实现原理。 示例 对于事务事件Spring提供了一个注解@TransactionEventListener,将这个注解标注在某个方法上,那么就将这个方法声明为了一个事务事件处理器,而具体的事件类型则是由 在Spring进行事务事件的时候会调用该对象对应的监听方法,从而达到对事务事件进行监听的目的。 小结 本文首先对事务事件监听程序的使用方式进行了讲解,然后在源码层面讲解了Spring事务监听器是如何实现的。 在Spring事务监听器使用过程中,需要注意的是要对当前接收到的事件类型进行判断,因为不同的事务可能会发布同样的消息对象过来。

    99720发布于 2019-05-30
  • 来自专栏码猿技术专栏

    Spring中的事件

    事件 2.1. Spring中内置的事件 2.2. 自定义事件 3. 监听器 3.1. 实现ApplicationListener接口 3.2. 使用@EventListener注解 4. 事件发布 4.1. Spring事件发布类 4.2. 直接注入 4.3. 使用ApplicationEventPublisherAware注入 5. 事件多播器 6. 异步事件 6.1. 在Spring中也有一些事件,比如容器启动、容器关闭、容器刷新都是一个事件Spring中自定义事件只需要继承ApplicationEvent即可完成一个自定义的Spring事件 /** * 自定义事件,继承ApplicationEvent */ @Data public 内置的事件,在容器启动的时候Spring会使用事件发布器发布事件,此时才是真正的触发事件,我们自定义的事件并不能被监听,除非被事件发布器发布。

    1.8K20发布于 2019-12-31
  • 来自专栏Java学习录

    Spring事件监听机制

    前言 Spring中的事件机制其实就是设计模式中的观察者模式,主要由以下角色构成: 事件 事件监听器(监听并处理事件事件发布者(发布事件) 首先看一下监听器和发布者的接口定义 public interface 初始化事件广播器 看一下这个方法AbstractApplicationContext.refresh,在IOC源码解析那篇文章已经把这个方法分析完了,所以直接关注事件广播器和事件发布相关的逻辑即可 ,默认是使用SimpleApplicationEventMulticaster的 发布事件 发布事件是在bean的初始化之后的 protected void finishRefresh() { 获取到事件广播器,发布事件 getApplicationEventMulticaster().multicastEvent(event); //2. 如果存在父容器,父容器也将发布事件 if (this.parent !

    1.7K40发布于 2019-09-19
领券