如何解决Spring 中的传播级别支持
根据文档,支持当前事务,如果不存在则以非事务方式执行。这意味着如果交易不可用,那么它将以非交易方式执行,而不会创建新的交易权限。但是我有一个方法注释为下面为什么 spring 正在创建新事务。
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public String saveMessageData(String message) {
Message message = new Message(message);
messageRepository.save(message);
return "Message Saved.";
}
在调试控制台中,我看到了以下语句
osorm.jpa.JpaTransactionManager:创建名为 [org.springframework.data.jpa.repository.support.SimpleJpaRepository.save] 的新事务:PROPAGATION_required,ISOLATION_DEFAULT
从服务类的控制器调用此方法 saveMessage()。认为在没有可用的现有事务之前并期望 saveMessage 方法应该以非事务方式执行但 spring 正在创建新事务。甚至尝试过 NEVER(根据文档,非事务性执行,如果 tx 存在则抛出异常)和 NOT_SUPPORTED(根据文档,非事务性执行,如果存在则暂停当前事务)-在所有这 3 种情况下,spring 总是创建新的具有必需传播的事务。我错过了什么要理解的东西吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。