- 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容器启动和关闭时事件监听
NULL 博文链接:https://hubowei1.iteye.com/blog/2327765
Spring框架作为Java开发的核心,其事件监听机制是理解和利用Spring的关键要素之一。这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器...
spring的Applicationcontext对事件的监听,在一个applicationContext范围内,实现类似MQ的效果
Spring事件监听机制
主要介绍了Spring boot通过HttpSessionListener监听器统计在线人数的实现代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
Spring 集成 IBM MQ 监听配置,包括用户管理配置和一些基础配置信息
Spring的ApplicationEvent事件和监听器的测试工程,演示了如何使用Spring中的事件和监听器内容。完整的maven工程,能够运行。
附件是在Spring Boot项目中使用CommandLineRunner接口 实现在服务启动后监控某个文件目录的文件变化FileAlterationListener
主要给大家介绍了关于Spring的事件监听机制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Spring的监听器ContextLoaderListener的作用
@Slf4j public class MyListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { log.info("web项目的启动{} 一开始就启动",sce....
基于springboot的文件夹监听和遗漏文件自动获取功能以及springboot编译的直接可运行的bat文件
一、Web项目中使用Spring o1. 新建一个Maven项目 o2. 使用之前的案例 o3. 定义index页面 o4. 定义RegisterServlet o5. 定义result页面 o6. web.xml 注册 Servlet o7. 运行结果分析 二、 使用 Spring 的器监听器 ...
Spring监听资料Spring监听资料
JAVA-spring学习资源之spring事件 1、spring事件发布 2、spring事件监听 3、多种不同事件方式示例
spring 监听器 源码阅读 事件驱动 publishEvent 欢迎下载
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
主要介绍了使用Spring事件机制实现异步的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧