我有一个带有声明式事务管理的 Spring+Hibernate 应用程序。我有一个服务 ( FooService
),它有 2 个公共方法MethodA
和MethodB
. call
客户端将MethodA
依次调用MethodB
.
Client -> MethodA -> MethodB
我希望事务仅从 MethodB 开始。这是我的 spring 应用程序上下文的一个片段:
<bean id="FooService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="transactionManager" />
<property name="target" ref="FooServiceTarget" />
<property name="transactionAttributes">
<props>
<prop key="MethodB">PROPAGATION_REQUIRED,-FooException</prop>
</props>
</property>
</bean>
但是,当我MethodA
从客户端调用时,它不会创建事务代理何时MethodB
被调用。如果我MethodA
还添加到应用程序上下文中的 bean 配置,则会调用事务代理(MethodA
如预期的那样开始)。为什么会这样?我可以实现仅从 MethodB 开始创建的事务吗?