如何在事务提交后才执行某个方法 开发过程中经常出现如下场景; 新增一篇文章,然后发一个广播mq出去; 广播监听者监听到消息然后根据文章id回查文章内容; 但是此时新增文章的方法的事务还没有提交,根据id回查数据库的时候查到数据为空。 代码如下: 此时我们希望的效果是,等事务提交之后再发 ...
TransactionSynchronizationManager.registerSynchronization new TransactionSynchronizationAdapter Override public void afterCommit System.out.println send email after transaction commit... 该方法在事务提交之后自动调 ...
2019-07-02 10:03 0 1451 推荐指数:
如何在事务提交后才执行某个方法 开发过程中经常出现如下场景; 新增一篇文章,然后发一个广播mq出去; 广播监听者监听到消息然后根据文章id回查文章内容; 但是此时新增文章的方法的事务还没有提交,根据id回查数据库的时候查到数据为空。 代码如下: 此时我们希望的效果是,等事务提交之后再发 ...
在某些特定的业务场景下,我们可能需要在事务成功提交之后,再做某些操作,而不能将这些操作放在事务代码中,事务还未提交就已经执行了,那这种情况之下,spring提供的TransactionalEventListener就会派上用场了。 使用demo 1. 调用DemoService ...
一、问题复现 1.场景 2个service方法, 方法A中调用方法B。 方法A 是核心业务方法,涉及多张表数据变更,为了保持数据一致,用spring事务注解:@Transactional(rollbackFor = Exception.class) 方法B 比较耗时,为了不影响核心业务 ...
https://blog.csdn.net/m0_38027656/article/details/84190949 https://www.cnblogs.com/foreveravalon/p/ ...
此时事务时不生效的,因为@Transactional注解事务是通过代理来控制的,方法调用本类方法,事务不会生效。 解决方法: ...
对于像我这种喜欢滥用AOP的程序员,遇到坑也是习惯了,不仅仅是事务,其实只要脱离了Spring容器管理的所有对象,对于SpringAOP的注解都会失效,因为他们不是Spring容器的代理类,SpringAOP,就切入不了 当然可以使用原生ASPECTJ,不用SpringAOP,但是基于生态链问题 ...
1.问题描述 对整个类加了事务类中有方法A A方法调用方法B(B带有事务) B方法需要查询A中要保存的数据报错: 原因 AB方法用了同一个事务 事务没有提交 B在数据库中是查询不到的 解决 引发: 不要针对整个类加事务太浪费 针对方法加事务 在写个方法调度A B事务加在A方法上 就ok 或者改 ...
public interface AService { public void a(); public void b(); } @Service() public class AServiceI ...