spring 使用@Async注解实现异步调用
2024-10-20 21:05:21
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(事件监听器)。
最新文章
- jvm死锁解决
- 谈事件冒泡(Bubble)和事件捕捉(capture)
- hive中的桶
- struts2升级文档
- SrcollView分页加载数据(第二种方法 自定义listView)
- 动态加载JS代码
- unity 3d 获取鼠标当前坐标
- 【52】写了placement new也要写placement delete
- Head First 设计模式系列之一----模板模式(java版)
- HW5.7
- Linux Stu
- 执行curl -sSL 提示curl: (35) SSL connect error
- QTableWidget简单操作
- C++外观设计模式模式(三)
- C# Conversion Keywords
- Python windows安装MYSQL_db
- PHP使用UTF8编码读取ACCESS的乱码问题解决方案(转)
- Grunt经常使用插件及演示样例说明
- Linux 查看磁盘分区、文件系统、磁盘的使用情况相关的命令和工具介绍
- Mysql使用binlog恢复数据解决误操作问题的两种方法