10

私は自分のプロジェクトで注釈ベースのトランザクション管理を使用しています (@Transactional でいくつかのメソッドに注釈を付けています)。分離レベルをグローバルに設定したいと思います(各 @Transactional アノテーションの引数としてではなく)。

XMLでそれを構成することは可能ですか? 現在、私のxml構成には含まれています

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

何らかの方法で分離を tx:annotation-driven に追加することは可能ですか?

4

1 に答える 1

6

Spring のトランザクション管理は、デフォルト以外のトランザクション分離を構成する場合 (たとえば @Transactional アノテーションで指定することにより) 、 Connectionにトランザクション分離を設定します。他のメカニズムによって接続のトランザクション分離が変更されないようにしながら、接続のトランザクション分離を構成できる場合は、アプリケーションが使用するトランザクション分離を事実上グローバルに設定します。

たとえば、Commons DBCP BasicDataSource クラスは、defaultTransactionIsolationプロパティを定義して、プールから返される接続のトランザクション分離を設定します。

<bean
    id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}"/>
  <property name="url" value="${jdbc.url}"/>
  <property name="username" value="${jdbc.username}"/>
  <property name="password" value="${jdbc.password}"/>
  <property name="defaultTransactionIsolation">
    <util:constant static-field="java.sql.Connection.TRANSACTION_READ_COMMITTED"/>
  </property>
</bean>
于 2011-03-03T23:54:30.990 に答える