Spring事务在类到类级别和方法到方法级别上的传播
Spring事务传播如何为需要的传播和需要的新传播工作 请提供有关类到类级别和方法到方法级别的传播的信息 我还需要知道如何初始化/启动这些事务,并在当前事务完成时恢复以前的事务,以便进行传播Spring事务在类到类级别和方法到方法级别上的传播,spring,transactions,spring-transactions,propagation,Spring,Transactions,Spring Transactions,Propagation,Spring事务传播如何为需要的传播和需要的新传播工作 请提供有关类到类级别和方法到方法级别的传播的信息 我还需要知道如何初始化/启动这些事务,并在当前事务完成时恢复以前的事务,以便进行传播 在需要传播和需要新传播的情况下使用单个事务时,事务将如何决定何时需要提交/回滚?希望此信息有助于了解spring tx传播的一些基本功能和流程 这是一些关于传播的基本信息,您也可以从一些著名的资源中找到,但需要先放在这里,了解一些关于Spring传播的基本知识: 传播是指决定如何在逻辑或物理事务中封装业务方
在需要传播和需要新传播的情况下使用单个事务时,事务将如何决定何时需要提交/回滚?希望此信息有助于了解spring tx传播的一些基本功能和流程 这是一些关于传播的基本信息,您也可以从一些著名的资源中找到,但需要先放在这里,了解一些关于Spring传播的基本知识: 传播是指决定如何在逻辑或物理事务中封装业务方法的能力 REQUIRED行为意味着,如果当前bean方法执行上下文中存在已打开的事务,则将使用相同的事务,如果不存在,则创建新事务 需要_NEW行为意味着容器将始终创建新的物理事务 嵌套的行为使嵌套的Spring事务使用相同的物理事务,但在嵌套调用之间设置保存点,因此内部事务也可以独立于外部事务回滚 强制的行为表明,现有的已打开交易必须已经存在。如果不是,容器将引发异常 从不行为表明,现有的已打开交易必须不存在。如果事务存在,容器将引发异常 不支持的行为将在任何事务范围之外执行。如果已打开的事务已存在,则将暂停该事务 如果已打开的事务已经存在,支持行为将在事务范围内执行。如果没有已打开的事务,该方法将以非事务方式执行 ==================================== 有些人还怀疑,如果我们提供Tx传播(例如,REQUIRES\u NEW),从同一类中的一个方法调用不同的方法会发生什么情况:
<bean id="class2" parent="yourSpringAOPInterceptor">
<property name="target">
<bean class="Class2">
<property name="prop1" ref="prop1" />
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="methodABC">PROPAGATION_REQUIRES_NEW</prop>
</props>
</property>
</bean>
没有
当方法调用在同一类中从一个方法到另一个方法时,它不会创建新事务。它将使用相同的事务。此传播仅适用于来自不同类的方法调用
示例:
<bean id="class2" parent="yourSpringAOPInterceptor">
<property name="target">
<bean class="Class2">
<property name="prop1" ref="prop1" />
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="methodABC">PROPAGATION_REQUIRES_NEW</prop>
</props>
</property>
</bean>
需要进行传播
传播需要新的
Class2具有以下方法结构:
- methodPQR()
- 方法ABC() 1) 当从类2外部调用methodPQR()时 此方法使用外部调用方的相同事务 2) 当从类2外部调用methodABC()时 此方法创建新事务,但不使用相同的事务 外部调用方的事务 3) 当methodPQR()调用同一类的methodABC()时,则调用methodABC() 不创建新事务并使用相同的事务 methodPQR()
<bean id="class2" parent="yourSpringAOPInterceptor">
<property name="target">
<bean class="Class2">
<property name="prop1" ref="prop1" />
</bean>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="methodABC">PROPAGATION_REQUIRES_NEW</prop>
</props>
</property>
</bean>
- 当第二个事务开始时,当前正在运行的事务会发生什么情况 第一笔交易
- 所有方法使用相同事务时提交更改的方式。 最内部的方法会提交所有更改还是最外部的方法 方法
- 如果第二个事务得到任何异常,会发生什么?应该吗 只回滚第二个事务,还是应该回滚第一个和第二个事务 第二,两项交易?同样,如果第一个事务得到任何 异常,它将仅回滚第一个事务或 由第二个(新的内部)事务提交的更改?-春天怎么样 决定这个
- 当第二个事务完成时,第一个事务如何恢复