广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何实现Spring Event(异步事件)
  • 922
分享到

如何实现Spring Event(异步事件)

Spring EventSpring Event 异步事件Spring异步事件 2023-02-14 12:02:12 922人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、叙述spring的事件需要遵循如下流程Spring框架中事件二、上Demo示例1. pom文件2. 自定义一个事件继承ApplicationEvent3. 自定义一个监听器实

一、叙述

当Spring的事件(Application Event)为Bean和Bean之间的消息同步提供了支持。

当一个Bean处理完成一个任务之后,希望另外一个Bean知道并能做相应的处理,这时我们就需要让另外一个Bean监听当前Bean所发生的事件

Spring的事件需要遵循如下流程

  • 自定义事件,继承ApplicationEvent
  • 定义事件监听器,实现ApplicationListener
  • 使用容器发布事件

Spring框架中事件

Spring提供了以下5种标准的事件:

  • 上下文更新事件(ContextRefreshedEvent):在调用ConfigurableApplicationContext 接口中的refresh()方法时被触发。
  • 上下文开始事件(ContextStartedEvent):当容器调用ConfigurableApplicationContext的Start()方法开始/重新开始容器时触发该事件。
  • 上下文停止事件(ContextStoppedEvent):当容器调用ConfigurableApplicationContext的Stop()方法停止容器时触发该事件。
  • 上下文关闭事件(ContextClosedEvent):当ApplicationContext被关闭时触发该事件。容器被关闭时,其管理的所有单例Bean都被销毁。

请求处理事件(RequestHandledEvent):在WEB应用中,当一个Http请求(request)结束触发该事件。

如果一个bean实现了ApplicationListener接口,当一个ApplicationEvent被发布以后,bean会自动被通知

二、上Demo示例

1. pom文件

<!-- https://mvnrepository.com/artifact/org.springframework/org.springframework.context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>org.springframework.context</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

2. 自定义一个事件继承ApplicationEvent

import com.hrm.dto.ExamAnswer;
import org.springframework.context.ApplicationEvent;


public class AnswerEvent extends ApplicationEvent {
    private static final long serialVersionUID = 1L;
    public AnswerEvent(ExamAnswer answer) {
        super(answer);
    }
}

3. 自定义一个监听器实现ApplicationListener<自定义事件>

import com.hrm.dto.ExamAnswer;
import com.hrm.service.event.AnswerEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component;


@Component
@EnableAsync
public class AnswerEventListener implements ApplicationListener<ExamAnswer> {
    @Override
    public void onApplicationEvent(AnswerEvent answerEvent) {
        ExamAnswer answer = (ExamAnswer) answerEvent.getSource();
        if(answer != null) {
            super.save(answer);
        }
    }
}

4. 再来一个事件发布类

import com.hrm.dto.ExamAnswer;
import com.hrm.service.event.AnswerEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Repository;

@Repository
public class ExamAnswerDaoImpl implements ExamAnswerDao {
    @Autowired
    private ApplicationContext applicationContext;
    
	private void putAnswerToSpringEvent(ExamAnswer examAnswer) {
		发送Spring Event 事件
        applicationContext.publishEvent(new AnswerEvent(examAnswer));
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何实现Spring Event(异步事件)

本文链接: https://www.lsjlt.com/news/195991.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何实现Spring Event(异步事件)
    目录一、叙述Spring的事件需要遵循如下流程Spring框架中事件二、上Demo示例1. pom文件2. 自定义一个事件继承ApplicationEvent3. 自定义一个监听器实...
    99+
    2023-02-14
    Spring Event Spring Event 异步事件 Spring异步事件
  • 如何实现Spring事件发布监听、顺序监听和异步监听
    这篇文章给大家分享的是有关如何实现Spring事件发布监听、顺序监听和异步监听的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. Spring的事件通知Spring的事件通知本质上就是发布-订阅,即生产者-消费者...
    99+
    2023-06-22
  • SpringBootEvent事件如何实现异步延迟执行
    目录SpringBoot Event 事件实现异步延迟执行使用它只需要三样东西总结SpringBoot Event 事件实现异步延迟执行 Spring的事件(Application ...
    99+
    2023-02-14
    SpringBoot Event事件 异步延迟执行 SpringBoot实现异步
  • spring如何实现事务异常回滚
    这篇文章将为大家详细讲解有关spring如何实现事务异常回滚,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为了打印清楚日志,很多方法我都加tyrcatch,在catch中打印日志。但是这边情况来了,当这个...
    99+
    2023-05-30
  • 详解SpringBoot实现事件同步与异步监听
    目录简介事件监听简述实例同步监听(无序)同步监听(有序)异步监听(无序)简介 说明 本文用示例介绍SpringBoot中的事件的用法及原理。 事件监听简述 事件的发布与监听从属于观察...
    99+
    2022-11-13
  • SpringBoot实现异步事件驱动的方法
    目录Spring事件驱动 源码实战 在项目实际开发过程中,我们有很多这样的业务场景:一个事务中处理完一个业务逻辑后需要跟着处理另外一个业务逻辑,伪码大致如下: @Service ...
    99+
    2022-11-12
  • ASP.NET基于事件的异步模式与异步Action怎么实现
    本篇内容主要讲解“ASP.NET基于事件的异步模式与异步Action怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET基于事件的异步模式与异步Action怎么实现”吧!尽管在A...
    99+
    2023-06-17
  • 如何在PHP异步编程中实现Spring API?
    在PHP异步编程中实现Spring API是一项复杂的任务,但是,如果您掌握了正确的技巧和工具,这项任务将变得更加容易。在本文中,我们将介绍如何使用PHP实现Spring API,并演示一些代码示例。 首先,我们需要了解什么是Spring ...
    99+
    2023-10-04
    异步编程 spring api
  • 异步请求如何利用Spring Boot来实现
    这篇文章给大家介绍异步请求如何利用Spring Boot来实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。首先说一下几个要点: @WebFilter 和 @WebServlet 注解中的 asyncSupp...
    99+
    2023-05-31
    springboot 异步请求
  • PHP 和 Spring 如何在 Windows 上实现异步编程?
    异步编程是现代软件开发中不可或缺的一部分。它可以提高应用程序的性能和响应时间,使用户在等待长时间操作时不至于感到无聊或挫败。PHP 和 Spring 是两种常用的编程语言和框架,它们在实现异步编程方面都有不同的方法。在本文中,我们将探讨如...
    99+
    2023-08-07
    spring windows 异步编程
  • 如何使用Log4j、ActiveMQ和Spring实现异步日志
    这篇文章主要介绍“如何使用Log4j、ActiveMQ和Spring实现异步日志”,在日常操作中,相信很多人在如何使用Log4j、ActiveMQ和Spring实现异步日志问题上存在疑惑,小编查阅了各式资料...
    99+
    2022-10-19
  • PHP Spring 文件同步:如何快速实现?
    在现代企业中,文件同步是非常重要的。特别是当企业有多个部门时,文件的共享和同步将是一个必不可少的任务。在这种情况下,使用 PHP Spring 是一种快速实现文件同步的方法。 PHP Spring 是一个 PHP 框架,它提供了一个简单而...
    99+
    2023-08-06
    spring 文件 同步
  • 聊聊Node中的异步实现与事件驱动
    对于某些场景有一些互不相关的任务需要完成,现行的主流方法有如下两种:多线程并行完成:多线程的代价在于创建线程和执行线程上下文切换的开销较大。另外,在复杂的业务中,多线程编程经常面临锁、状态同步等问题;单线程顺序执行:易于表达,但串行执行的缺...
    99+
    2022-11-22
    前端 后端 Node.js
  • 如何在ASP中利用Spring接口实现异步数据同步?
    ASP是一种广泛使用的Web开发技术,而Spring则是一个非常流行的Java应用程序框架。在ASP中利用Spring接口实现异步数据同步可以有效提高系统的性能,让用户获得更好的体验。本文将介绍如何在ASP中利用Spring接口实现异步数据...
    99+
    2023-09-03
    同步 spring 接口
  • 在spring boot中如何使用@Async实现异步调用
    在spring boot中如何使用@Async实现异步调用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是”异步调用”与”同步调用”“同步调用”就是程序按照一定的顺序依次执...
    99+
    2023-05-31
    springboot @async 异步调用
  • Spring中注解方式的异步请求如何实现
    小编给大家分享一下Spring中注解方式的异步请求如何实现,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、Servlet3.0异步请求@WebServlet(value = "/async&...
    99+
    2023-06-15
  • html5如何实现文件异步上传
    这篇文章主要为大家展示了“html5如何实现文件异步上传”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5如何实现文件异步上传”这篇文章吧。1 简介开发文...
    99+
    2022-10-19
  • Ajax如何实现异步上传文件
    这篇文章将为大家详细讲解有关Ajax如何实现异步上传文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码如下所示:<!DOCTYPE html>...
    99+
    2022-10-19
  • ASP文件如何实现异步编程?
    ASP(Active Server Pages)是一种动态网页技术,可以在Web服务器上生成动态内容。在ASP中,可以使用异步编程技术来优化网页性能和响应速度。本文将介绍ASP文件如何实现异步编程。 一、什么是异步编程? 异步编程是一种非...
    99+
    2023-10-02
    文件 异步编程 重定向
  • JavaScript事件循环同步任务与异步任务怎么实现
    这篇文章主要介绍“JavaScript事件循环同步任务与异步任务怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript事件循环同步任务与异步任务...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作