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 に答える