1.先定义一个事件,该类继承 ApplicationEven的抽象类

import org.springframework.context.ApplicationEvent;

public class DemoTask extends ApplicationEvent {

    private String id;

    public OrgRegisterTask(Object source, Stringid) {
super(source);
this.id = id;
} public String getId() {
return id;
}
}

2.定义一个监听者,时刻监听者发布者是否有发布任务。

import com.alibaba.fastjson.JSON;
import com.xxx.event.OrgRegisterTask;
import com.xxx.service.DemoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Component; @Slf4j
@Component
@EnableAsync
public class DemoTaskHandler { @Autowired
private DemoService demoService; @EventListener
@Async
public void demoHandler(DemoTask demoTask) {
demoService.registerAccount(demoTask.getId());
} }

3.事件发布

import javax.annotation.Resource;
import org.springframework.context.ApplicationEventPublisher; @Component
public class DemoPubLisher { @Resource
private ApplicationEventPublisher publisher; //事件发布方法
public void pushListener(String id){
publisher.publishEvent(new DemoTask(this,id));
} }

在类上,我们增加了注解@EnableAsync 表示开启异步@Async注解,不使用@EnableAsync注解,@Async是不会生效的;@Component 把bean注册到spring容器中;.在方法上我们使用了@EventListener(事件监听器)。

spring 使用@Async注解实现异步调用的更多相关文章

  1. 使用Spring中@Async注解实现异步调用

    异步调用? 在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕,继 ...

  2. Spring源码学习之:@async 方法上添加该注解实现异步调用的原理

    在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下 spring 是如何完成这个功能的.    spring 在扫描be ...

  3. Spring @async 方法上添加该注解实现异步调用的原理

    Spring @async 方法上添加该注解实现异步调用的原理 学习了:https://www.cnblogs.com/shangxiaofei/p/6211367.html 使用异步方法进行方法调用 ...

  4. @async 方法上添加该注解实现异步调用的原理

    在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下 spring 是如何完成这个功能的. spring 在扫描bean的 ...

  5. SpringBoot系列——@Async优雅的异步调用

    前言 众所周知,java的代码是同步顺序执行,当我们需要执行异步操作时我们需要创建一个新线程去执行,以往我们是这样操作的: /** * 任务类 */ class Task implements Run ...

  6. Spring中@Async注解实现“方法”的异步调用

    原文:http://www.cnblogs.com/zhengbin/p/6104502.html 简单介绍: Spring为任务调度与异步方法执行提供了注解支持.通过在方法上设置@Async注解,可 ...

  7. (转)spring boot注解 --@EnableAsync 异步调用

    原文:http://www.cnblogs.com/azhqiang/p/5609615.html EnableAsync注解的意思是可以异步执行,就是开启多线程的意思.可以标注在方法.类上. @Co ...

  8. spring boot注解 --@EnableAsync 异步调用

    EnableAsync注解的意思是可以异步执行,就是开启多线程的意思.可以标注在方法.类上. @Component public class Task { @Async public void doT ...

  9. spring使用@Async注解异步处理

    1. 何为异步调用?在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行 ...

  10. spring中使用@Async注解进行异步处理

    引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3. ...

随机推荐

  1. OpenLayers入门练习

    一.实验内容 练习OpenLayers的引用形式; 简单地图加载; 控件加载. 二.实验步骤 2.1 ol引用 <!doctype html> <html lang="zh ...

  2. Python实战项目5-Git远程仓库/分支合并/冲突解决

    Git分支 为什么要有分支 可以保证主分支的版本都是可以查看的版本 我们都在开发分支开发,开发完成 合并代码 分支操作 分支查看 git branch 分支创建 git branch 分支名 分支切换 ...

  3. EF Core迁移 (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。)

    A connection was successfully established with the server, but then an error occurred during the log ...

  4. Xilinx XPM使用说明--XPM_MEMORY_SDPRAM

    XPM_MEMORY_SDPRAM 参数化宏:简单的双端口RAM 介绍 此宏用于实例化简单双端口RAM.端口A用于从存储器执行写入操作,端口B可用于从存储器读取. 下面介绍XPM_MEMORY实例的基 ...

  5. Qt中的多窗体编程(续二)

    四.实现子窗体的按钮功能. 1.在显示时间的子窗体中,有两个默认的按钮,都还没有定义其功能,下面就来定义,无论单击哪个按钮,都将线束时钟显示的线程并关闭窗体. 2.在子窗体的可视化设计界面中,在窗体的 ...

  6. Solidity8.0-02

    对应崔棉大师 26-40课程https://www.bilibili.com/video/BV1yS4y1N7yu/?spm_id_from=333.788&vd_source=c81b130 ...

  7. (pymssql._pymssql.OperationalError) (8152, b'String or binary data would be truncated.DB-Lib error message 20 018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n')

    (pymssql._pymssql.OperationalError) (8152, b'String or binary data would be truncated.DB-Lib error m ...

  8. ERNIE1-2

    ERNIE1.0 ERNIE: Enhanced Representation through Knowledge Integration提出了三种级别的masking:(1)word piece级别 ...

  9. Kubernetes 安装网络插件(calico)

    简介 Calico是Kubernetes生态系统中另一种流行的网络选择.虽然Flannel被公认为是最简单的选择,但Calico以其性能.灵活性而闻名.Calico的功能更为全面,不仅提供主机和pod ...

  10. uni消息推送

    //APP.vuegetUser(){//获取客户端标识 消息推送 // #ifdef APP-PLUS var pinf = plus.push.getClientInfo(); var cid = ...