2011-03-03 79 views
8

我在基于注解的项目事务管理中使用(我使用@Transactional注释了一些方法)。我想全局设置隔离级别(而不是将它作为每个@Transactional注释的参数)。在基于Spring注释的事务中设置隔离级别

是否可以在XML中配置?目前我的xml配置包含

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

是否有可能以某种方式加入隔离TX:注释驱动?

回答

5

如果您配置非默认事务隔离(例如,通过在@Transactional注释中指定它),Spring的事务管理会在Connection上设置事务隔离。如果您可以配置连接的事务隔离,同时确保没有其他机制更改连接的事务隔离,那么您实际上会全局设置应用程序使用的事务隔离。

例如,共享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> 
相关问题