TransactionSynchronization是一个回调接口,用于在事务执行过程中的重要时间点执行额外的逻辑,AbstractPlatformTransactionManager中通过TransactionSynchronizationManager间接调用绑定到当前事务所在线程的TransactionSynchronization集合的对应的回调方法;
TransactionSynchronizationManager使用ThreadLocal管理当前事务的TransactionSynchronization集合;
ResourceHolderSynchronization是用来同步资源状态的,这里的资源就是Spring 事务框架中的资源的概念,就是JDBC里的Connection,Hibernate里的Session,JPA里的EntityManager,Kafka里的Producer;回到ResourceHolderSynchronization,比如KafkaResourceSynchronization提供的能力是当前ResourceHolderSynchronization(KafkaResourceSynchronization)对象所绑定的事务完成之后,间接调用kafka的Producer的commitTransaction或者abortTransaction方法。