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>
transaction-manager為上面定義的事務管理器<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>
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