在 Spring 支持传播级别

56lgkhnf  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(221)

按单据,支持当前交易,不支持非交易执行。这意味着如果事务不可用,那么它将以非事务方式执行,而不创建新的事务权限。但我有一个方法注解如下,为什么spring要创建新事务。

@Override
@Transactional(propagation = Propagation.SUPPORTS)
public String saveMessageData(String message) {
    Message message = new Message(message);
    messageRepository.save(message);
    return "Message Saved.";
}

在调试控制台中,我看到了以下语句
o、 s.orm.jpa.jpatransactionmanager:创建名为[org.springframework.data.jpa.repository.support.simplejparepository.save]的新事务:传播\必需,隔离\默认值
此方法从服务类的控制器调用savemessage()。认为在没有可使用的现有事务之前,savemessage方法应该以非事务方式执行,但spring正在创建新事务。即使尝试了never(根据doc,以非事务方式执行,如果tx存在则抛出异常)和not\u supported(根据doc,以非事务方式执行,如果存在则挂起当前事务)-在所有这3种情况下,spring总是创建具有所需传播的新事务。我错过了什么可以理解的吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题