为DataSourceTransactionManager设置自定义隔离级别

时间:2012-12-19 22:03:35

标签: spring transactions isolation-level transactionmanager

如何为DataSourceTransactionManager启用自定义隔离级别?

我的弹簧配置文件中有以下内容。

<bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="myDataDource"/>    
</bean>

<bean id="myTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true" lazy-init="false" autowire="default" dependency-check="default">
  <property name="transactionManager">
     <ref bean="transactionManager" /> 
  </property>
  <property name="transactionAttributes">
     <props>
        <prop key="cancel">PROPAGATION_REQUIRED,ISOLATION_READ_UNCOMMITTED,timeout_25,-Exception</prop>
     </props>
  </property>
</bean> 

但是当我尝试运行它时,它会给我以下错误。

org.springframework.transaction.InvalidIsolationLevelException: JtaTransactionManager does not support custom isolation levels by default - switch 'allowCustomIsolationLevels' to 'true'

我没有使用JtaTransactionManager,为什么我收到警告呢? 如何为DataSourceTransactionManager启用自定义隔离级别?在文档中,有人提到此类将支持自定义隔离级别,但我没有在线找到任何示例。其中大部分仅适用于JtaTransactionManager。只是想知道是否有人可以帮助我。感谢。

1 个答案:

答案 0 :(得分:1)

TransactionManager可以是DataSourceTransactionManager或JtaTransactionManager或JpaTransactionManager,我们可以使用@Transactional注释来配置隔离级别。

如果上下文文件启用了<tx:annotation-driven />,该文件支持DAO或服务级别上的注释,则会识别该事务。

<{1}} isolation属性允许您配置它们。

@Transactional @Transactional(isolation = Isolation.READ_COMMITTED)

参考:Isolation levelsTransactional

我不确定配置xml文件

希望这有助于。 :)