SpringMVC 手動控制事務提交

描述

 

       事務仍是一個比較好的東東,有了這個,咱們在作流程性的東西的時候,就會很好,很nice。spring

如今看看 SpringMVC 如何實現的,詳細請看代碼:express

 

一、配置文件 applicationContext.xml:

<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
安全

二、在須要加事務的方法上加上

DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) ctx
.getBean("txManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔離級別,開啓新事務,這樣會比較安全些。
TransactionStatus status = transactionManager.getTransaction(def); // 得到事務狀態
try {
//邏輯代碼,能夠寫上你的邏輯處理代碼
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
}
app

這是在有 ApplicationContext 的狀況下、

 

 

3. ApplicationContext 不存在的狀況下

 

    @Autowiredspa

    private DataSourceTransactionManager txManager;xml

 

   DefaultTransactionDefinition def = new DefaultTransactionDefinition();事務

   def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);// 事物隔離級別,開啓新事務rem

   TransactionStatus status = txManager.getTransaction(def); // 得到事務狀態get

try{
//邏輯代碼,能夠寫上你的邏輯處理代碼
txManager.commit(status);
}catch(Exception e){
txManager.rollback(status);
}
it

 

 

3. Spring聲明式事務配置

          

<!-- 事務配置 spring 3.0 -->

<beanid="transactionManager class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<propertyname="dataSource"ref="dataSource"/>

</bean>

<aop:config>

<aop:pointcutexpression="execution(public * com.*.service.impl.*Impl.*(..))"id="pointcut"/>

<aop:advisoradvice-ref="txAdvice"pointcut-ref="pointcut"/>

</aop:config>

<tx:adviceid="txAdvice"transaction-manager="transactionManager">

<tx:attributes>

<tx:methodname="query*"propagation="REQUIRED"read-only="true"/>

<tx:methodname="find*"propagation="REQUIRED"read-only="true"/>

<tx:methodname="get*"propagation="REQUIRED"read-only="true"/>

<tx:methodname="save*"propagation="REQUIRED"/>

<tx:methodname="add*"propagation="REQUIRED"/>

<tx:methodname="create*"propagation="REQUIRED"/>

<tx:methodname="delete*"propagation="REQUIRED"/>

<tx:methodname="del*"propagation="REQUIRED"/>

<tx:methodname="remove*"propagation="REQUIRED"/>

<tx:methodname="modify*"propagation="REQUIRED"/>

<tx:methodname="update*"propagation="REQUIRED"/>

<tx:methodname="clear*"propagation="REQUIRED"/>

</tx:attributes>

</tx:advice>

相關文章
相關標籤/搜索