0

这是我正在使用的示例配置。

当我从外部类调用 doSomething() 方法时,事务性是所希望的。

但是,当我从“目标”bean 中调用相同的方法时,事务似乎永远不会启动,因此在失败的情况下不会发生回滚。

这是预期的行为还是我错过了什么?

<bean id="my.bean" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="txManager"/>
    <property name="target" ref="my.bean.impl"/>
    <property name="transactionAttributes">
        <props>
            <prop key="doSomething">PROPAGATION_REQUIRED, -Exception</prop>
        </props>
    </property>
</bean>
4

1 回答 1

1

是的,这是一种预期的行为。拦截器或代理包装目标 bean,拦截从外部对 bean 的调用,然后委托给目标 bean。它不知道内部调用。需要字节码检测来拦截内部调用。

于 2013-01-28T21:31:27.977 回答