我正在使用 org.springframework.transaction.annotation.Transactional
并且正在调用我只希望能够从使用 @Transactional
注释的方法调用的方法>.
由于我不会污染这个问题的原因,我想作为事务的一部分调用的方法永远不应该用事务边界调用,我想强制执行这一点。
我是否可以使用注释或类似的注释来确保只能从使用 @Transactional
注释的方法中成功调用这些方法?
最佳答案
在最简单的情况下,您可以使用 Propagation.MANDATORY
(即 @Transactional(propagation=Propagation.MANDATORY)
)事务传播而不是默认的 Propagation.REQUIRED
。
如果您使用编程事务,那么您会检查 TransactionStatus
getter - 即使您的传播是REQUIRED
,您也可以验证 TransactionStatus.isNewTransaction()
返回假。
关于java - 确保调用的方法在 Spring @Transactional 边界内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37196712/