我的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()
的{{1}}将产生什么影响}
REQUIRED_NEW
还是回滚?InspectRequestImpl.activateRequest()
的内容还是会引发异常?答案 0 :(得分:1)
默认行为是在经过检查的异常之后提交,在未经检查的异常之后回滚。
如果您希望在检查异常后执行回滚,请在事务规范中添加回滚规则。 对于一般异常使用“PROPAGATION_REQUIRED,-Exception”或对特定异常使用“PROPAGATION_REQUIRED,-MyException”。
如果您的方法声明抛出异常,则抛出异常,否则不会抛出异常。 Spring不会传播异常......您可以尝试/捕获异常并且不执行任何操作。