在基于Spring的应用程序中,事务管理器负责提交或回滚SQL事务。 我的应用程序对持久数据的某些部分使用自定义缓存。 这个缓存不是由Spring和Hibernate管理的。
如果SQL事务遇到错误并且必须回滚,那么也应该回滚缓存修改。
我的问题是,当Spring事务管理器回滚事务时,如何注册一个事件监听器或回调函数调用我的cache.evict()
方法?
答案 0 :(得分:2)
您可以使用TransactionSynchronizationAdapter。作为参考,您可以查看:Spring - commit JMS Transaction after JPA transaction
在链接中给出的答案中,同步已注册afterCommit
。在您的情况下,它将是afterCompletion
。在该实现中,您需要检查事务是否处于回滚状态并执行高速缓存驱逐。
答案 1 :(得分:0)
有很多方法可以做到这一点......