- spring里的事件为bean与bean间消息通信提供了支持,我们希望在一个bean处理完一个任务后,通知其他的bean做相应的事,此时就需要另外的Bean去监听当前bean所发生的事件
- 定义spring的事件需做以下几件事:
- 自定义事件,继承ApplicationEvent
- 定义一个事件监听器,实现ApplicationListener
- 使用容器ApplicationContext来发布事件
一.自定义事件
package com.zgw.event; import org.springframework.context.ApplicationEvent; public class EventDemo extends ApplicationEvent{ private static final long serialVersionUID = 1L; private String msg; public EventDemo(Object source,String msg) { super(source); this.msg=msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
二.事件监听器
package com.zgw.event; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * 实现ApplicationListener接口,并指定事件类型EventDemo * @author zan * */ @Component public class ListenerDemo implements ApplicationListener<EventDemo> { //此方法是对消息进行处理 public void onApplicationEvent(EventDemo event) { String msg = event.getMsg(); System.out.println("我(bean-listenerDemo)接受到了bean-publisherDemo发布的消息:" + msg); } }
三.事件发布类
package com.zgw.event; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @Component public class PublisherDemo { //注入ApplicationContext用来发布事件 @Autowired ApplicationContext applicationContext; public void publish(String msg){ //调用publishEvent()来发布 applicationContext.publishEvent(new EventDemo(this, msg)); } }
四.配置类
package com.zgw.event; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan("com.zgw.event") public class EventConfig { }
五.测试类
package com.zgw.event; import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class TestEvent { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class); PublisherDemo publisher = context.getBean(PublisherDemo.class); publisher.publish("Hello application event"); context.close(); } }
运行结果如下:
相关推荐
在Spring框架中,事件监听是一种实现模块间解耦的有效手段,它允许我们在应用程序的不同部分之间传递消息,而无需直接依赖。本篇文章将详细介绍Spring事件监听的三种方式:基于接口的监听器、基于类的监听器以及基于...
spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听;spring容器启动和关闭时事件监听
首先,事件(ApplicationEvent)是Spring框架中事件的核心。Spring内置了一些预定义的事件类型,如ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent和ContextClosedEvent,它们分别对应于Spring...
在Spring框架中,`ApplicationContext`不仅是一个容器,用于管理Bean的生命周期和依赖注入,它还提供了事件发布和监听的功能。这个特性使得Spring应用能够实现组件间的异步通信,类似于消息队列(MQ)的工作模式。...
在Spring框架中,事件监听机制是一种非常重要的组件间通信方式,它允许应用程序的不同部分通过发布和订阅事件来进行异步通信。这种模式使得组件之间松耦合,提高了代码的可维护性和可扩展性。下面我们将详细探讨...
在Spring中,事件发布者负责发布事件,而事件监听者则负责监听事件并执行相应的操作。 1. 观察者模式 Spring的事件监听机制是观察者模式的一种实现。观察者模式是一种常用的设计模式,它允许对象之间相互通信,而...
在Spring Boot中,监听器是用来响应特定事件的组件,例如Web应用程序的启动和关闭。`MyListener`类实现了`ServletContextListener`接口,这个接口有两个主要方法:`contextInitialized`和`contextDestroyed`。当Web...
在Spring框架中,ApplicationEvent和监听器是实现应用内异步通信的重要机制。这个测试Demo主要展示了如何在Spring环境中创建自定义事件、发布事件以及注册和处理这些事件。以下是对这个测试工程的详细解析: 首先,...
- 在Spring Boot应用中,我们可以创建一个`@Component`,并使用`@EventListener`注解来监听特定事件,或者自定义一个`ApplicationListener`监听`ApplicationReadyEvent`,在应用启动后开始监听文件夹。 - 使用`@...
在Spring boot中通过HttpSessionListener监听器统计在线人数是一种常见的技术实现方式,适用于需要跟踪和管理用户会话状态的Web应用程序。以下是从给定文件中提炼的关键知识点。 首先,了解HttpSessionListener接口...
Spring监听器是Spring框架中的一个重要组成部分,主要用于监听和响应应用上下文或Bean的生命周期事件。在Spring中,监听器是通过实现特定接口或者继承抽象类来定义的,这些接口包括ApplicationContextAware、...
在使用Spring事件机制实现异步的方法时,通常需要将事件监听器添加到ApplicationContext中。在上面的代码中,使用@SpringBootApplication的addListeners方法将MyListener添加到ApplicationContext中。 使用@Event...
Spring 集成 IBM MQ 监听配置,包括用户管理配置和一些基础配置信息
在本文中,我们将详细介绍Spring监听器及定时任务实现方法的详解。通过示例代码,我们将展示如何使用Spring监听器和定时任务来实现批处理任务的执行。 Spring监听器 在Spring框架中,监听器是指实现...
首先,Spring监听器是基于事件驱动模型的,这种模式在多线程和分布式系统中非常常见。在Spring中,当一个特定的事件发生时,如bean的初始化或销毁,上下文的启动或关闭等,Spring会通过发布事件(publishEvent)来...
Spring监听器是实现特定接口的类,这些接口提供了对Spring容器生命周期事件的处理能力。本资料集合将深入探讨Spring监听器的概念、作用以及如何在实际开发中使用它们。 首先,我们要了解的是`ApplicationListener`...
在Spring框架中,事件处理是一种重要的组件间通信方式。它允许一个对象在完成特定操作后,通知其他对象这一事实,而无需这些对象之间有直接的依赖关系。这种机制基于Java的观察者模式(Observer Pattern),使得松...