当前位置: 首页 > news >正文

Springboo中事务事件监听类的使用

1. TransactionalEventListener注解介绍

  • @TransactionalEventListener 注解:常用于标记一个事件监听方法,当指定的事务阶段完成时,会触发该事件。它是 @EventListener 的扩展,专门用于处理事务相关的事件。

  • phase 属性:用于指定事务事件监听的阶段。常见的选项包括:

    • TransactionPhase.BEFORE_COMMIT:事务提交之前触发。
    • TransactionPhase.AFTER_COMMIT:事务成功提交之后触发。
    • TransactionPhase.AFTER_ROLLBACK:事务回滚之后触发。
    • TransactionPhase.AFTER_COMPLETION:事务完成(无论是提交还是回滚)之后触发。
  • 必须在带有@Transactional注解的方法中发布事件才能触发@TransactionalEventListener。如果事件发布方法没有事务,则事务事件监听器不会被触发。

  • @TransactionalEventListener自身不需要@Transactional,但需要事件发布的上下文有事务管理。

2. 监听类

@GetterpublicclassCommitEventextendsApplicationEvent{privateStringeventValue;privateObjectpayload;publicCommitEvent(Objectsource,StringeventValue,Objectpayload){super(source);this.eventValue=eventValue;this.payload=payload;}}

3. 添加事务

@RestController@Slf4jpublicclassDemoController{@AutowiredprivateDemoServicedemoService;@GetMapping("/update")publicResponseEntity<String>update(Peoplepeople){demoService.updateFtp(people);returnResponseEntity.ok("success");}}@ServicepublicclassDemoService{@AutowiredprivateApplicationEventPublisherapplicationEventPublisher;@AutowiredprivatePeopleMapperpeopleMapper;@TransactionalpublicvoidupdateFtp(Peoplepeople){// 1. 执行用户更新逻辑(更新到数据库)peopleMapper.update(people);// 2. 发布用户更新事件(此时事务尚未提交)applicationEventPublisher.publishEvent(this,"test01","test");}}

4. 事务事件监听类

@Slf4j@ComponentpublicclassDemoListener{@Async@TransactionalEventListener(condition="#commitEvent.eventValue == 'test01'",phase=TransactionPhase.AFTER_COMMIT)publicvoidafterDataBaseCommit(CommitEventcommitEvent){log.info("afterDataBaseCommit : commitEvent = {} ",commitEvent);}}
http://www.jsqmd.com/news/475017/

相关文章:

  • Jimeng LoRA部署教程:Jetson AGX Orin边缘设备轻量化部署可行性报告
  • 阿里通义Z-Image-Turbo实战案例:风景油画风格生成参数详解
  • PyQt5/PySide6的moveToThread:移动到线程
  • Android boot_progress_start日志的含义
  • 单片机的工厂方法模式
  • AIVideo如何降本提效?中小企业AI视频创作平台落地实践
  • 小工厂也能搞智能排程?MES+轻量化APS的落地思路
  • 3D Face HRN惊艳案例:3D人脸重建+风格迁移联合生成艺术化头像
  • 关于如何将项目上传至Github(大于100MB的文件)
  • COZE - 1
  • 在openSUSE-Leap-15.6-DVD-x86_64中使用gnome-builder-45.0的基本功能(一)
  • Git-RSCLIP遥感图像分类代码实例:Python调用API实现批量推理
  • 蓝桥杯嵌入式-任务调度器
  • GME-Qwen2-VL-2B-Instruct效果展示:修复指令后,低匹配误判率下降68%(实测数据)
  • Qwen3-VL:30B快速部署教程:星图平台Qwen3-VL:30B+Clawdbot飞书集成全流程
  • all-MiniLM-L6-v2部署教程:Ollama + Grafana构建Embedding服务可观测体系
  • Pi0真实场景迁移路径:演示模式→仿真环境→真机ROS桥接全流程
  • GTE-Pro快速上手:curl命令直调REST API,验证‘缺钱’→‘资金链断裂’语义映射
  • 国家超算中心免费算力 海光深算三号BW1000(即异构加速卡BW)性能上对标NVIDIA H100,在AI训练 A100
  • DeepChat环境配置:Mac M2/M3芯片原生运行Llama3:8b的Metal加速配置指南
  • 2026年靠谱的等离子切割电焊两用机工厂推荐:固态电池焊接逆变两用机厂家选择指南 - 品牌宣传支持者
  • lingbot-depth-vitl14多场景实战:机器人SLAM前端深度图供给、AR虚拟锚点定位应用
  • DAMO-YOLO嵌入式部署:树莓派5+RPi.GPIO硬件触发识别流程
  • Nanbeige4.1-3B实战手册:用WebUI API对接企业微信/钉钉Bot服务
  • 2026年口碑好的推拉棚厂家推荐:活动推拉棚/大型推拉棚/大型固定推拉棚实力工厂怎么选 - 品牌宣传支持者
  • Qwen3-TTS声音克隆入门指南:如何录制高质量参考音频提升克隆效果
  • Nunchaku FLUX.1-dev开源可审计优势:模型权重/代码/工作流全透明
  • Qwen3-ASR-1.7B应用场景:法律庭审录音→发言角色分离+证据片段定位系统
  • 2026年知名的不插电电焊机厂家推荐:电机车蓄电池电焊机/矿用直流轨道电焊机实力工厂怎么选 - 品牌宣传支持者
  • CLIP-GmP-ViT-L-14部署教程:NVIDIA驱动+CUDA12.1+PyTorch2.1兼容方案