gpt4 book ai didi

java - Spring 从 REQUIRED_NEW 方法调用 REQUIRED 方法

转载 作者:行者123 更新时间:2023-12-02 04:44:03 25 4
gpt4 key购买 nike

我的 bean 条目如下

<bean id="inspectReqImpl"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="activateRequest">PROPAGATION_REQUIRES_NEW</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name="target">
<bean
class="com.test.InspectRequestImpl">
</bean>
</property>
</bean>

<bean id="inspectReqProcess"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name="target">
<bean
class="com.test.InspectRequestProcessImpl">
</bean>
</property>
</bean>

当我调用 com.test.InspectRequestImpl.activateRequest() 方法时,Spring 将创建新事务

public void activateRequest()
{

Calling method of InspectRequestProcessImpl(ex: processRequest())
For InspectRequestProcessImpl we have defined all methods as PROPAGATION_REQUIRED

}

所以,如果方法 (InspectRequestProcessImpl.processRequest()) 出现任何异常(已检查或未检查)其交易传播为REQUIRED那么对 InspectRequestImpl.activateRequest() 有何影响?其中有交易传播REQUIRED_NEW

  • 在这种情况下 spring 将如何表现。它会提交InspectRequestImpl.activateRequest()还是回滚?
  • 它只是回滚 InspectRequestProcessImpl.processRequest() 的内容吗?或者会引发异常?

最佳答案

默认行为是在检查异常后提交,在未检查异常后回滚。

如果您想在检查异常后进行回滚,请在事务规范中添加回滚规则。对于一般异常使用“PROPAGATION_REQUIRED,-Exception”,对于特定异常使用“PROPAGATION_REQUIRED,-MyException”。

如果你的方法声明抛出异常,则异常将被抛出,否则不会。 Spring 不会传播异常...您可以尝试/捕获异常而不执行任何操作。

关于java - Spring 从 REQUIRED_NEW 方法调用 REQUIRED 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29841053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com