Java 调用SpringBean';具有不同事务属性的方法?
如果具有特定事务属性的事务方法调用具有不同事务属性的同一bean中的方法,会发生什么情况?在Spring中使用standart事务配置,则不会发生任何情况。从文档中(查看声明性事务管理的完整解释): 在代理模式(默认)下,只有外部方法调用 通过代理进入被拦截。这意味着 自调用,实际上是目标对象中调用 目标对象的另一种方法,不会导致实际的 即使调用的方法标记为 @事务性的Java 调用SpringBean';具有不同事务属性的方法?,java,spring,Java,Spring,如果具有特定事务属性的事务方法调用具有不同事务属性的同一bean中的方法,会发生什么情况?在Spring中使用standart事务配置,则不会发生任何情况。从文档中(查看声明性事务管理的完整解释): 在代理模式(默认)下,只有外部方法调用 通过代理进入被拦截。这意味着 自调用,实际上是目标对象中调用 目标对象的另一种方法,不会导致实际的 即使调用的方法标记为 @事务性的 如果需要在同一个bean中使用方法调用更改事务行为(传播、只读状态等),可以将事务模式更改为AspectJ并使用编译时wiev
如果需要在同一个bean中使用方法调用更改事务行为(传播、只读状态等),可以将事务模式更改为AspectJ并使用编译时wieving(如何执行)。但我从未在实际操作中这样做,只是为了测试。通常,默认事务设置就足够了。@transactional的只读属性有以下例外:
@Transactional(readOnly=true)
void methodA(){}
@Transactional
void methodB(){}
如果您这样调用该方法,并且使用Hibernate或其他ORM平台:
methodA();
methodB();
将引发只读连接异常。在您的情况下,@Transactional的哪些属性是不同的?您能解释一下您想要实现的场景吗?相关:抱歉,但您想说什么?@Transactional(readOnly=true)将打开只读连接,Spring不允许您通过SQL更新表,说连接是只读的。是的,但是如果在methodA(…)中,您只从DB读取一些数据,而不修改它,那么它将正常工作。我看不到您对所问问题的回答有任何真实性。