确保调用的方法在Spring @Transactional边界内

时间:2016-05-12 20:21:13

标签: java database spring

我正在使用org.springframework.transaction.annotation.Transactional并且正在调用我只希望能够从使用@Transactional注释的方法调用的方法。

由于我不会污染这个问题的原因,我想要作为事务的一部分调用的方法永远不会被事务边界调出,我想强制执行此操作。

我是否可以使用注释或类似方法来确保只能从使用@Transactional注释的方法成功调用这些方法?

1 个答案:

答案 0 :(得分:1)

在最简单的情况下,您可以使用>>> x, y = {}, {} >>> x == y True >>> hash(x) == hash(y) False >>> x[{}] = 3 >>> x[{}] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: {} (即Propagation.MANDATORY)交易传播,而不是默认@Transactional(propagation=Propagation.MANDATORY)

如果您使用程序化交易,则检查Propagation.REQUIRED获取者 - 即使您的传播为TransactionStatus,您也可以验证REQUIRED是否返回false。