需要从Spring文档进行Spring传播

需要从Spring文档进行Spring传播,spring,spring-transactions,Spring,Spring Transactions,除此之外,如果方法b()是通过代理从a()调用的呢?它是否是一个单独的逻辑事务,具有与文档中提到的相同的传播和隔离设置: 当需要传播设置时,逻辑 事务作用域是为设置所基于的每个方法创建的 应用每个这样的逻辑事务范围都可以确定 使用外部事务作用域单独回滚状态 逻辑上独立于内部事务范围。属于 当然,对于标准的传播行为,所有这些 作用域将映射到同一物理事务。那么 内部事务作用域中设置的仅回滚标记不会影响 外部事务实际提交的机会(如您所料 是的 有人能解释一下这两者之间的区别吗 为每个方法创建一个逻辑事

除此之外,如果方法b()是通过代理从a()调用的呢?它是否是一个单独的逻辑事务,具有与文档中提到的相同的传播和隔离设置:

当需要传播设置时,逻辑 事务作用域是为设置所基于的每个方法创建的 应用每个这样的逻辑事务范围都可以确定 使用外部事务作用域单独回滚状态 逻辑上独立于内部事务范围。属于 当然,对于标准的传播行为,所有这些 作用域将映射到同一物理事务。那么 内部事务作用域中设置的仅回滚标记不会影响 外部事务实际提交的机会(如您所料 是的

有人能解释一下这两者之间的区别吗

为每个方法创建一个逻辑事务作用域,其中 设置已应用。每个这样的逻辑事务范围都可以确定 使用外部事务作用域单独回滚状态 逻辑上独立于内部事务范围

当然,对于标准的传播行为,所有 这些作用域将映射到同一个物理事务


不知道为什么你认为应该有区别。第二句完成第一句。你的问题到底是什么?在#1中,如果我使用代理从met1()调用met2(),这两种方法具有相同的传播(必需),但只回滚met2(),我观察到met1()也会回滚。因此,语句、外部事务和内部事务具有独立的回滚是不可理解的。#1句话是否适用于所有传播类型?每个跨语言方法定义一个转换范围。如果需要传播,则与met2作用域关联的物理事务与与met1作用域关联的物理事务相同。因此,从met2设置回滚状态将回滚调用met1时启动的物理事务。