1. 程式人生 > >spring mvc 小記(七):關於spring事務管理

spring mvc 小記(七):關於spring事務管理

使用spring mvc已有2年之久,卻還是停留在使用階段,感覺這麼下去不是辦法,所以還是想往深處一探究竟。

spring事務管理

事務,簡單的說,就是對於一個操作來說,要麼都成功,要麼都失敗,這樣可以保證資料的一致性,在spring mvc中也可以配置相應的事務管理器,有兩種實現方法:XML和註解。

XML配置方式實現事務

在spring配置檔案中,初始化一個事務管理器,同時將資料來源注入:

<span style="font-size:18px;"><bean id="transactionManager"
		  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="druidDataSource" />
	</bean></span>
定義事務的基本屬性:
<span style="font-size:18px;"><tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="find*" read-only="true" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice></span>
transaction-manager為上面定義的事務管理器

name屬性定義在哪些方法上呼叫;

propagation定義了該事務的傳播屬性,預設值為REQUIRED,作用是“支援當前事務,如果當前沒有事務,就新建一個事務,即只有一個事務,出現異常時該事務內的所有操作都會回滾”,其他6個值可在api上查到,一般選擇預設值;

read-only作用是“只接受只讀操作”,預設值為false,若配置為true,當配置的方法中出現對資料庫的增刪改時,會報異常如:Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed,適當的配置該屬性可提高效能。

最後配置該事務的切面,事務配置完成:

<span style="font-size:18px;"><aop:config>
		<!-- 定義一個切入點 -->
		<aop:pointcut id="interceptorPointCuts"
					  expression="execution(* com.jk.service.impl.*Impl.*(..)) or execution(* com.jk.dao.*.*(..))" />
		<!-- 對切入點和事務的通知,進行適配 -->
		<aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" />
	</aop:config></span>

註解方式實現事務

同樣的,在spring配置檔案中,初始化一個事務管理器,同時將資料來源注入:

<span style="font-size:18px;"><span style="font-size:18px;"><bean id="transactionManager"
		  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="druidDataSource" />
	</bean></span></span>
然後開啟註解:
<tx:annotation-driven transaction-manager="transactionManager"/>
這樣就可以在程式碼中使用事務的註解了,在需要事務的方法上加上,其中各屬性與xml配置中的相同:
@Transactional(propagation=Propagation.REQUIRED,rollbackForClassName="Exception")

相關推薦

spring mvc 小記()關於spring事務管理

使用spring mvc已有2年之久,卻還是停留在使用階段,感覺這麼下去不是辦法,所以還是想往深處一探究竟。 spring事務管理 事務,簡單的說,就是對於一個操作來說,要麼都成功,要麼都失敗,這樣可

spring mvc 小記(一)spring註解與java原註解

使用spring已有2年之久,卻還是停留在使用階段,感覺這麼下去不是辦法,所以還是想往深處一探究竟。 今天無意中查詢到java註解,才瞭解到原來那些框架裡的註解全是基於java所提供的元註解上編寫的,也就是說,我們自己也可以自定義註解。參考資料出處:http://blog.

Spring系列教程 Spring 整合mybatis的四種方式

一、使用採用資料對映器(MapperFactoryBean)的方式註解實現整合mybatis 不用寫mybatis對映檔案,採

Spring揭祕》讀書筆記四統一事務管理

一、背景和支撐 事務程式碼混在業務程式碼之中,不便於維護。基於上一章介紹的 AOP可以想到,通過AOP的方式 將 Spring事務從 業務程式碼中剝離出來。  自己實現的話:宣告一個註解,然後通過 AOP的  @annoation的 Pointcut 為 帶有 自定義註解

Spring Boot系列教程Spring boot集成MyBatis

override fill sql water sso avi size logs index 一.創建項目 項目名稱為 “springboot_mybatis_demo”,創建過程中勾選 “Web”,“MyBatis”,“MySQL”,第一次創建Maven

Spring-MVC理解之一應用上下文webApplicationContext

節點 lba filter lin title tin sed 找不到 默認 原文轉至 http://www.cnblogs.com/brolan... 一、先說ServletContext   javaee標準規定了,servlet容器需要在應用項目啟動時,給應

spring MVC 報錯java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet

重新 chain http1 accesslog instance report ppc springmvc bstr 嚴重: Allocate exception for servlet SpringMVCjava.lang.ClassNotFoundExceptio

Spring MVC筆記() springMVC文件上傳

one 模型 定義 admin copy att post version get 創建springMVC工程 SpringMVCFileUpload,導入springMVC相關jar以及commons-io.jar、commons-fileupload.jar; 創建sp

Spring Boot 2.0()Spring Boot 如何解決項目啟動時初始化資源

springboot在我們實際工作中,總會遇到這樣需求,在項目啟動的時候需要做一些初始化的操作,比如初始化線程池,提前加載好加密證書等。今天就給大家介紹一個 Spring Boot 神器,專門幫助大家解決項目啟動初始化資源操作。 這個神器就是 CommandLineRunner,CommandLineRunn

Spring Boot2.0之多資料來源事務管理

結合前面做的小專案,如果我把test01 test02下面的 service 都加了 事務的註解 這樣啟動時候會報錯! 事務管理器裡面不能有兩個事務!!!! 這時候需要用  @Transactional(transactionManager="test1TransactionManager")

Spring Security教程()RememberMe功能

在之前的教程中一筆帶過式的講了下RememberMe記住密碼的功能,那篇的Remember功能是最簡易的配置,其功能和安全性都不強。這裡就配置下security中RememberMe的各種方式。 一、概述 RememberMe 是指使用者在網站上能夠在 Session 之間記住登入使用者的身份的憑證,通俗

Spring詳解(八)------事務管理

目錄 1、事務介紹 2、事務的四個特性(ACID) 3、Spring 事務管理的核心介面 4、 PlatformTransactionManager  事務管理器 5、TransactionStatus 事務狀態 6、TransactionD

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

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

Spring第三天Spring的AOP的註解開發、Spring的宣告式事務、JdbcTemplate

目錄 1.Spring的AOP基於AspectJ的註解開發 1.1Spring基於ApsectJ的註解的AOP開發 1.1.1建立專案,引入jar包 1.1.2引入配置檔案 1.1.3編寫目標類並配置 1.1.4編寫切面類並配置 1.1.5使用註解的AOP物件目標類進

SpringCloud實戰Spring Cloud Ribbon 實戰

前面的兩篇部落格已經講解了Feign作為服務間的呼叫,但是Feign是整合、封裝了Ribbonn這個元件而來的,讓服務間的呼叫更方便,因此大多使用Feign,本篇讓大家瞭解Ribbon的概念與呼叫 Ribbon是Netflix開發的一個負載均衡元件,它在服務體系中起著重要作用,Piv

Spring Boot 2.0()Spring Boot 如何解決專案啟動時初始化資源

在我們實際工作中,總會遇到這樣需求,在專案啟動的時候需要做一些初始化的操作,比如初始化執行緒池,提前載入好加密證書等。今天就給大家介紹一個 Spring Boot 神器,專門幫助大家解決專案啟動初始化資源操作。 這個神器就是 CommandLineRunner,CommandLineRunner 介面的 Co

資料庫事務的四大特性、隔離級別以及Spring中如何利用AOP進行事務管理

首先,什麼是事務? 事務就是業務上的一個邏輯單元,它能夠保證其中對資料所有的操作,要麼成功,要麼失敗。 其次,事務的特性有哪些? 1.原子性。 例如,轉賬,A賬戶減少,B賬戶增加。雖然是兩條 DML語句,但是被當做是一個整體,一次事務。兩條語句只能同時成功或者同時失敗。 2

Spring來一發(四)事務管理

1、Spring事務原理 spring實現對事務的控制,使用的是代理的技術。通過生成的代理類來捕捉被代理類的異常,決定事務的提交或回滾。從某一角度來說,spring事務是基於異常實現的。 Spring事務的本質其實就是資料庫對事務的支援,其底層是依賴於資料庫事務的,或者說,Spring事務是

Spring-MVC報錯org.springframework.validation.BeanPropertyBindingResult

完成報錯如下: org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object ‘

Spring+Spring MVC+JDBCTemplate實現簡單的使用者管理功能

1. 前言 最近一直在學習Spring相關的知識,這篇部落格是一個階段性的自我總結,寫給自己以後作為參考用。本文介紹的是使用Spring、Spring MVC和JDBCTemplate來實現一個十分簡單的使用者管理功能,實現資料的增、刪、改、查。工程目錄是這樣的: 在s