spring 事件监听使用@TransactionalEventListener,解决同一个线程中拿不到另一个事务的数据(让之前的事务提交)

定义事件

java 复制代码
package com.amarsoft.lease.mail.event;

import org.springframework.context.ApplicationEvent;
public class TestEvent extends ApplicationEvent {
    private String flowId;

    public TestEvent (Object source, String flowId) {
        super(source);
        this.flowId = flowId;
    }

    public String getFlowId() {
        return flowId;
    }

    public void setFlowId(String flowId) {
        this.flowId = flowId;
    }
}

发布事件

java 复制代码
applicationContext.publishEvent(new TestEvent(flowId, flowId));

监听事件

java 复制代码
@Slf4j
@Component
public class BillSendFlowMailListener {

    @TransactionalEventListener
    public void sendBillSendFlowMail(BillSendFlowMailEvent event) {
        String flowId = event.getSource().toString();
        try {
            //业务逻辑
        }catch (Exception e) {
            log.error("事件测试,flowId" + flowId, e);
        }
    }
}
相关推荐
苍何28 分钟前
DeepSeek的Super-agent 设计,和我们的工程实践
后端
Patrick_Wilson1 小时前
第一次读 Go 项目:从两个源码文件弄清 package、import 和 go.mod
后端·go·编程语言
代码山河1 小时前
基本类型转换:自动类型转换与强制类型转换
java·学习·架构·教程·面向对象·项目
Patrick_Wilson1 小时前
执行 go build . 后,Go 怎样找到代码并生成程序
后端·go·编程语言
用户6919026813391 小时前
Redis 2:Redis 在怎么处理harness记忆
后端
Patrick_Wilson1 小时前
Go 变量不赋值时,为什么也有值
后端·go·编程语言
Patrick_Wilson1 小时前
读 Go 项目里的命令:run、build、test 分别做了什么
后端·go·编程语言
Escalating_xu2 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
程序猿乐锅2 小时前
万字详解Single-flight(单飞模式)
java·开发语言·分布式·后端·学习·single-flight
Java后端的Ai之路3 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli