2011-03-03 82 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> 
相關問題