我在我的项目基于注释的事务管理中使用(我使用@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?
答案 0 :(得分:6)
如果您配置非默认事务隔离(例如,通过在@Transactional注释中指定),Spring的事务管理会在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>