场景:为了解决同一个事务下某一属性值修改尚未提交,但是要调用异步处理发送短信或者邮件此时需要重新获取DB里面最新值。就必须保证异步处理必须要在之前的事务结束之后再进行异步处理。这时就需要事务同步管理器:
TransactionSynchronizationManager 去对事务进行管理。
//保证事务提交之后执行 TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() { @Override public void afterCommit() { //to do something System.out.println("send email after transaction commit..."); } });
注意:如果事务同步不活动,则会抛出ILLALSTATEExeExchange异常