我有一个声明式事务管理的Spring + Hibernate应用程序。 我有一个服务(FooService
),它有2种公开方法MethodA
和MethodB
。客户将call
MethodA
,而这又将拨打MethodB
。声明式事务管理在Spring中表现不可预知
Client -> MethodA -> MethodB
我想交易只能从方法b起开始。 这是我的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开始创建的交易?
谢谢你的答案(和链接)。对不起,我不知道这些问题已经在SO上提出。 –