1. 程式人生 > >宣告式事務管理方式:基於AspectJ的XML方式和基於註解的方式

宣告式事務管理方式:基於AspectJ的XML方式和基於註解的方式

基於AspectJ的XML方式

        <!-- 配置事務管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
        
     <!-- 配置事務的通知:(事務的增強) -->
	 <tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="transfer" propagation="REQUIRED" isolation="DEFAULT" />
			<!-- 
				<tx:method>標籤中的屬性:
				propagation	:事務的傳播行為
				isolation	:隔離級別
				read-only	:只讀
				rollback-for:發生哪些異常回滾
				no-rollback-for:發生哪些異常不要回滾
				timeout		:過期資訊
			 -->
		</tx:attributes>
	</tx:advice>
	
	
	<!-- 配置aop的切面 -->
	<aop:config>
		<!-- 切入點	前面*代表返任意回值 ,其中AccountService+.*(..)的  +代表子類 / .*任意方法  /  (..)任意引數-->
		<aop:pointcut expression="execution(* demo3.AccountService+.*(..))" id="pointcut1"/>
		<!-- 切面 
			<aop:advisor> :一個切入點,一個通知
			<aop:aspect>  :多個切入點,多個通知	-->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut1"/>
	</aop:config>
主要是aop方式的事務管理

基於註解的方式 

        <!-- 配置事務管理器 -->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           <property name="dataSource" ref="dataSource"/>
        </bean>
        
        <!-- 開啟註解事務 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
業務層實現類添加註解
/**
 * 轉賬案例的業務層實現類
 * @author kyulin
 *
 * @Transactional註解中的屬性:
 * propagation	:傳播行為
 * isolation	:隔離級別
 * readOnly		:只讀
 * rollbackFor	:發生哪些異常回滾
 * noRollbackFor:發生哪些異常不回滾
 */

@Transactional
//@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,readOnly=true)
public class AccountServiceImpl implements AccountService {
	//注入轉賬的DAO的類
	private AccountDao accountDao;
	
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 
	 * @param out   :轉出的賬號
	 * @param in    :轉入的賬號
	 * @param money :轉賬金額
	 */
	@Override
	public void transfer(String out, String in, Double money) {
		// TODO Auto-generated method stub
		accountDao.outMoney(out, money);
		int d = 1/0;
		accountDao.inMoney(in, money);
	}

}

總結:




相關推薦

spring宣告事務管理基於註解方式

1)在spring.xml中配置事務管理器DataSourceTransactionManager,<bean id="txManager" class="org.springframework.

宣告事務管理方式基於AspectJ的XML方式基於註解方式

基於AspectJ的XML方式 <!-- 配置事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataS

第十一講11.spring宣告事務管理-xml方式

1,複製專案spring404 ,改名spring404-2,修改BankServiceImpl類,刪除宣告式事務的程式碼。宣告式事務管理的方式缺點是,事務程式碼嚴重嵌入邏輯程式碼中 package com.cruise.service.impl; import org.springframewor

spring宣告事務管理方式( 基於txaop名字空間的xml配置[email&#

轉自:https://www.cnblogs.com/niceyoo/p/8732891.html 1. 宣告式事務管理分類 宣告式事務管理也有兩種常用的方式, 一種是基於tx和aop名字空間的xml配置檔案,另一種就是基於@Transactional註解。 顯然基於註解的方式更簡單

淺談spring事務管理的2種方式程式設計事務管理宣告事務管理;以及@Transactional(rollbackFor=Exception.class)註解用法

事務的概念,以及特性: 百度百科介紹: ->資料庫事務(Database Transaction) ,是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。 事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過

spring事務管理之四宣告事務管理使用事務註解方式

事務註解的方式,相對xml的方式來說,有優點,無需配置需要事務的業務方法的切點和事務屬性。但是也有缺點,就是需要在每個需要事務的業務方法上加上一個註解@Transaction,否則事務不會生效。 這裡沿用之前spring事務管理的程式碼: pom.xml依賴部分: <depen

spring事務管理之三宣告事務管理使用xml配置檔案的方式

這種方式是開發中常見的一種方式:利用aop的思想,將需要事務管理的業務方法通過xml配置的方式,將事務管理加在該類的相關方法上。這種方法的優點是,一次xml配置,後期不用關心業務類增加或者減少,通過xml中配置的匹配資訊,會去找業務類所在的包和方法,然後加上事務。 重點是配置<tx:a

spring事務管理之二宣告事務管理使用代理方式

spring宣告式事務管理,分為三種方式,分別是: 1、使用代理類TransactionProxyFactoryBean的方式 2、使用aspectj+xml配置的方式 3、使用事務註解的方式 其中後面兩種是比較常用的,使用xml和註解的方式。 這裡介紹使用代理類Transa

深入解讀Spring Framework事務管理(第四彈基於@Transactional註解宣告事務管理

基於註解的宣告式事務,主要使用的是@Transactional註解,下面我們來具體看一下。 使用@Transactional註解實現事務的例子 // 這個service我們要將他事務化 @Transactional public class Defa

宣告事務管理三:基於註解的配置

這種基於註解配置的宣告式事務管理方法式很簡單,很方便              (1) 像之前一樣恢復到初始狀態 (2) 配置事務管理器(注入連線池)       (3) 開啟註解

宣告事務管理二:基於AspectJ的xml配置

下面講述的是宣告式事務管理的第二種方法,是基於AspectJ的xml配置的       (1) 引入AspectJ的java包(一種簡化的操作)並copy到web-INF       (2) 配置事務管理器   &n

第十二講12,spring宣告事務管理-註解

1,複製專案spring404 ,改名spring404-3。修改BankServiceImpl類,添加註解,package com.cruise.service.impl;import org.springframework.transaction.annotation.Tra

spring事物配置,宣告事務管理基於@Transactional註解的使用

spring支援程式設計式事務管理和宣告式事務管理兩種方式。         程式設計式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager。對於程式設計式事務管理,spring推薦使用Transactio

9.spring事務管理(下):宣告事務管理

宣告式事務管理  sprin的宣告式事務是管理AOP技術實現的事務管理,其本質是是對方法前後進行攔截,然後 在目標方法開始之前建立或者加入一個事務,在執行完成目標方法之後根據執行情況提交或者回滾事務。   宣告式事務管理優點:不需要通過程式設計的方式管理事務,因而不需要在業務邏輯程

xml方式實現spring的宣告事務管理及對jdbc操作的支援

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-

SSHSpring框架(宣告事務管理詳解)

1) 概念:事務 (Transaction) 是訪問並可能更新資料庫中各種資料項的一個程式執行單元 (unit) 。事務通常由高階資料 庫操縱語言或程式語言 (如 SQL , C++ 或 Java ) 書寫的使用者程式的執行所引起, 並用形如 begin transacti

spring支援程式設計事務管理宣告事務管理兩種方式

1、宣告式事務提交,註解transaction,自動進行事務提交和回滾。    宣告式事務管理也有兩種常用的方式,一種是基於tx和aop名字空間的xml配置檔案,另一種就是基於@Transactional註解。2、程式設計式事務管理,在程式碼中顯示進行事務提交及回滾。原文:h

spring 宣告事務管理註解方式實現

使用註解實現Spring的宣告式事務管理,更加簡單! 步驟:          1) 必須引入Aop相關的jar檔案          2) bean.xml中指定註解方式實現宣告式事務管理以及應用的事務管理器類          3)在需要新增事務控制的地方,寫上: @T

Spring不同事務管理方式宣告事務管理區域性回滾處理方案

Spring配置檔案中關於事務配置總是由三個組成部分,分別是DataSource、TransactionManager和代理機制這三部分,無論哪種配置方式,一般變化的只是代理機制這部分。  DataSource、TransactionManager這兩部分只是會根據資料訪問

事務管理及spring基於註解宣告事務管理的配置用法

因為前幾天看一個專案文件出現“本系統採用基於Spring的宣告式事務控制”,才根據文件和程式碼瞭解了一下事務管理的相關知識。這裡對自己的學習做個總結。 一:相關概念 1.事務:事務是一系列的動作,它們