Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用SpringBean';具有不同事务属性的方法?_Java_Spring - Fatal编程技术网

Java 调用SpringBean';具有不同事务属性的方法?

Java 调用SpringBean';具有不同事务属性的方法?,java,spring,Java,Spring,如果具有特定事务属性的事务方法调用具有不同事务属性的同一bean中的方法,会发生什么情况?在Spring中使用standart事务配置,则不会发生任何情况。从文档中(查看声明性事务管理的完整解释): 在代理模式(默认)下,只有外部方法调用 通过代理进入被拦截。这意味着 自调用,实际上是目标对象中调用 目标对象的另一种方法,不会导致实际的 即使调用的方法标记为 @事务性的 如果需要在同一个bean中使用方法调用更改事务行为(传播、只读状态等),可以将事务模式更改为AspectJ并使用编译时wiev

如果具有特定事务属性的事务方法调用具有不同事务属性的同一bean中的方法,会发生什么情况?

在Spring中使用standart事务配置,则不会发生任何情况。从文档中(查看声明性事务管理的完整解释):

在代理模式(默认)下,只有外部方法调用 通过代理进入被拦截。这意味着 自调用,实际上是目标对象中调用 目标对象的另一种方法,不会导致实际的 即使调用的方法标记为 @事务性的


如果需要在同一个bean中使用方法调用更改事务行为(传播、只读状态等),可以将事务模式更改为AspectJ并使用编译时wieving(如何执行)。但我从未在实际操作中这样做,只是为了测试。通常,默认事务设置就足够了。

@transactional的只读属性有以下例外:

@Transactional(readOnly=true)
void methodA(){}

@Transactional
void methodB(){}
如果您这样调用该方法,并且使用Hibernate或其他ORM平台:

methodA();
methodB();

将引发只读连接异常。

在您的情况下,@Transactional的哪些属性是不同的?您能解释一下您想要实现的场景吗?相关:抱歉,但您想说什么?@Transactional(readOnly=true)将打开只读连接,Spring不允许您通过SQL更新表,说连接是只读的。是的,但是如果在methodA(…)中,您只从DB读取一些数据,而不修改它,那么它将正常工作。我看不到您对所问问题的回答有任何真实性。