【发布时间】:2018-08-03 17:02:27
【问题描述】:
我有一个小型 Spring Boot 应用程序,其中 spring-boot-starter-web、spring-boot-starter-data-jpa 和 postgresql 作为依赖项。
我能够使用@Transactional 注释并使用JPA 来获取实体并将其保存到数据库中。但是,如果我要通过注册同步添加afterCommit/afterCompletion 挂钩,它会给出IllegalStateException 说Transaction synchronization is not active。
TransactionSynchronizationManager.registerSynchronization(
new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
//this doesn't get called
log.info("do something here");
}
});
执行TransactionSynchronizationManager.initSynchronization(); 会消除错误,但不会调用挂钩(例如:即使事务已提交,也不会调用afterCommit 挂钩。)
关于如何调试的任何线索?
【问题讨论】:
-
提交后你想做什么?
-
新的 TransactionSynchronizationAdapter() 已弃用
标签: spring spring-boot spring-data-jpa spring-transactions