2

org.springframework.jdbc.datasource.DataSourceTransactionManagerトランザクションの管理に使用するシンプルなアプリがあります。私の春の設定は次のとおりです。

<tx:annotation-driven/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

メソッドに注釈を付けて@Transactional印刷しましたTransactionSynchronizationManager.isActualTransactionActive()

しかし、出力はですfalse。私は何を間違えましたか?

編集:私はそれをでテストすると言うのを忘れましたSpringJUnit4ClassRunner.class。を含めましたがTransactionalTestExecutionListener.class、これは機能しません。これで、クラスを拡張した後に機能しましたAbstractTransactionalJUnit4SpringContextTests

4

3 に答える 3

0

以下をcfgファイルに追加するのを忘れたと思います。これは、注釈を使用する場合に必要です。これを追加しましたか?

<tx:annotation-driven/>

ここに名前空間があります

xmlns:tx="http://www.springframework.org/schema/tx"

 xsi:schemaLocation="http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
于 2011-01-16T17:19:32.547 に答える
0

私は同じ問題を抱えていました。代わりにこれを使用する必要があります:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
于 2013-06-25T15:15:03.973 に答える
0

テスト クラスで必要な注釈を使用しましたか?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/spring-....xml")
@TestExecutionListeners({TransactionalTestExecutionListener.class, DependencyInjectionTestExecutionListener.class})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional(readOnly = false)
public class MyTest {
 ...
}

最後の 2 つが本当に必要かどうかはわかりません。テスト ケースにアクティブなトランザクションを持たせたいので、それらが必要です。アノテーション付き Bean のトランザクション プロキシを取得するには、最初の 3 つで十分です。

于 2011-07-07T12:19:15.517 に答える