我有两个类,ServiceA 和 ServiceB,它们都有调用数据库的方法
在 ServiceA 我有以下代码
public void updateData() {
//some database updates
serviceB.addDetails();
//some more database updates
}
这是我在两个类的 applicationContext 中的配置
<bean id="serviceATarget" class="com.company.service.ServiceA">
<property name="serviceB" ref="serviceB" />
<property name="serviceADAO" ref="serviceADAO" />
</bean>
<bean id="serviceA" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="target" ref="serviceATarget" />
<property name="transactionAttributes">
<props>
<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<bean id="serviceBTarget" class="com.company.service.serviceB">
<property name="serviceBDAO" ref="serviceBDAO" />
</bean>
<bean id="serviceB" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="target" ref="serviceBTarget" />
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
问题是在 ServiceA 中,如果在“//一些更多的数据库更新”部分之后发生异常,则所做的更新serviceB.addDetails()
不会被回滚。
帮助将不胜感激。谢谢。