0

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

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

<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。只是想知道是否有人可以帮助我解决这个问题。谢谢。

4

1 回答 1

1

TransactionManager可以是 DataSourceTransactionManager 或 JtaTransactionManager 或 JpaTransactionManager,无论是什么,我们都可以使用@Transactional注解配置隔离级别。

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

isolation的属性@Transactional将允许您配置它们。

@Transactional(isolation = Isolation.READ_COMMITTED) public void save(Country country) { // do some operations }

参考:隔离级别事务性

我不确定配置 xml 文件

希望这可以帮助。:)

于 2012-12-20T15:15:28.513 回答