spring註解式交易管理執行個體

來源:互聯網
上載者:User

一.spring設定檔

這裡使用spring命名空間,如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    default-autowire="byName"  default-lazy-init="true">

 <context:property-placeholder location="classpath:jdbc.properties" />

 <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="initialSize" value="${jdbc.initialSize}" />
  <property name="maxActive" value="${jdbc.maxActive}" />
  <property name="maxIdle" value="${jdbc.maxIdle}" />
  <property name="minIdle" value="${jdbc.minIdle}" />
  <property name="maxWait" value="${jdbc.maxWait}" />
 </bean>

 <!-- 設定transactionManager -->
 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
 </bean>

<!--啟動spring註解功能-->

 <tx:annotation-driven transaction-manager="transactionManager" />

 
</beans>

說明:

1.如果交易管理員的id是transactionManager,這裡可以不對transaction-manager進行配置,即<tx:annotation-driven />就可以。

2.這個配置是告訴spring在類(介面)層面或者方法層面上檢查應用程式上下文中的所有標準了@Transactional的bean,spring將自動把事務通知的內容通知給它。

3.這個通知的事務參數將由@Transactional注釋的參數來定義。

4.如果注釋的是介面,則該介面的所有實作類別都將被事務化。

二.使用@Transactional標註bean

package com.netqin.bbs.initUserData;

import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.netqin.bbs.initUserData.service.InitUserDataService;
import com.netqin.bbs.utils.Constant;
import com.netqin.bbs.utils.ReadFileUtil;

@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)//設定預設的交易管理策略,即沒有標註@Transactional的方法的交易處理方式,意思為不要求方法必須在一個事務中運行
public class InitUserData {
 /**                                                         
 * 描述 :使用方法上聲明的交易管理策略,這裡的意思為需要在一個事務中運行. <br>
 *<p>                                                 
                                                                                                                                                                                                                                                                                                
 */
 @Transactional(propagation=Propagation.REQUIRED,readOnly=false)
 public void method1(){

  ……………………

  ……………………   
 
 }

 /**                                                         
 * 描述 : 使用預設策略. <br>
 *<p>                                                 
                                                                                                                                                                                                                                                                                                
 */

 public void method2(){

  ……………………

  ……………………   
 
 }

}

記得要將這個bean加入到spring上下文中。

一般來說,上述兩種事務策略就可以滿足要求了,不過需要注意,註解功能的使用需要在項目中加入cglib-nodep-x.x_x.jar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.