【发布时间】:2021-06-06 00:50:28
【问题描述】:
我有一个用 @Transactional 注释的 Spring Boot 服务类方法,我需要在其中 将事务提交到 MYSQL DB,然后执行 finally 代码块,将实体推送到 Redis 队列。下面是我的代码sn-p:
@Transactional
public void save(Entity t) {
try {
entityRepository.save(t);
} catch(Exception ex) {
log.error("Error while executing transaction",e);
} finally {
//code to push to redis
}
}
我的疑问是事务是否会被提交,finally块是否会被执行?或者 @Transactional 只有在 finally 块完成后才会完成所有事务。如果是后者,如何确保我的事务在推送到 Redis 之前已经提交?
请指教。
注意: entityRepository 是一个扩展 CrudRepository 的类
【问题讨论】:
标签: java mysql spring-boot spring-transactions