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);
        }
    }
}
相关推荐
大厂码农老A5 分钟前
你打的日志,正在拖垮你的系统:从P4小白到P7专家都是怎么打日志的?
java·前端·后端
摇滚侠7 分钟前
Spring Boot 3零基础教程,深度理解 Spring Boot 自动配置原理,笔记11
spring boot·笔记·后端
间彧21 分钟前
Spring Boot默认支持Logback的原因分析
后端
艾菜籽22 分钟前
Spring MVC入门补充2
java·spring·mvc
ezl1fe23 分钟前
第零篇:把 Agent 跑起来的最小闭环
人工智能·后端·agent
文心快码BaiduComate30 分钟前
文心快码Comate3.5S更新,用多智能体协同做个健康管理应用
前端·人工智能·后端
爆更小哇32 分钟前
统一功能处理
java·spring boot
程序员鱼皮33 分钟前
我造了个程序员练兵场,专治技术焦虑症!
java·计算机·程序员·编程·自学
我是天龙_绍37 分钟前
mybatis-plus 设置 数据库的字段自动填充
后端
Rust菜鸡38 分钟前
在你的Rust类型里生成TypeScript的bindings!
后端