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);
        }
    }
}
相关推荐
Your易元41 分钟前
设计模式-备忘录模式
java·开发语言·spring·设计模式
零叹1 小时前
篇章二 需求分析(一)
java·开发语言·mq·生产者消费者模型·brokerserver
摆烂仙君2 小时前
腾讯2025年校招笔试真题手撕(一)
java·数据结构·算法
曼岛_2 小时前
[Java实战]Spring Boot整合Seata:分布式事务一致性解决方案(三十一)
java·spring boot·分布式
在未来等你2 小时前
JDK21全景图:关键特性与升级价值
java·虚拟线程·jdk21·模式匹配·技术文章
吾零鬼泣3 小时前
day09-新热文章-实时计算
java·kafka·maven·mybatis
白日依山尽yy4 小时前
SpringBoot Day_03|数据校验|异常处理|日志级别|定时器
java·spring boot·spring
Java&Develop4 小时前
springboot 集成kerberos 用户认证 获取域账号
java·spring boot·后端
会飞的架狗师4 小时前
【SpringBoot实战指南】使用 Spring Cache
spring boot·后端·spring·缓存
努力也学不会java6 小时前
【RabbitMQ】 RabbitMQ高级特性(二)
java·分布式·后端·中间件·rabbitmq