springaop注解事物事務管理簡介 Spring 事務管

電腦雜談  發布時間:2018-02-20 23:06:17  來源:網絡整理

spring MVC注解aop_springaop注解事物_spring 事務

??Spring 事務管理有兩種方式:一種是編程式事務管理,即通過編寫代碼實現事物管理,包括定義事務的開始,程序正常執行后的事物提交,異常時進行的事務回滾。另一種是基于AOP技術實現的聲明式事務管理,其主要思想是將事務管理作為一個“切面”代碼單獨編寫,我們只用關心核心業務邏輯代碼,然后通過AOP技術將事務管理的“切面”代碼織入到業務類中,聲明式事務管理有包括基于AOP方式的事務管理和基于 @Transactional注解方式的事務管理,聲明式事務管理極大的簡化了編程式事務管理的操作流程,不再需要重復地執行定義事物的開始,程序正常執行后事務提交,異常時進行事物回滾這些繁瑣的操作,而基于 @Transactional注解的聲明式事務又進一步簡化了基于AOP的事務管理,減少了Spring配置代碼。

??聲明式事務的缺點在于只能作用到方法級別,無法做到像編程式事務那樣能控制到代碼塊級別。

事務傳播行為

??事務規則也就是事務傳播行為,用于解決業務層方法之間的相互調用的問題題。常見的事物傳播行為可分為以下幾種:

名稱說明

表示當前方法必須運行在一個事物環境中,如果一個現有的事物正在運行,該方法將運行在這個事務中,否則,就要開始一個新的事務

??事務管理的主要任務是事務的創建,事務的回滾和事務的提交,是否需要創建事務及如何創建事務,是由事務傳播行為控制的,通常數據的讀取可以不需要事務管理,或者可以指定為只讀事務,而對于數據的增加,刪除和修改操作,則有必要進行事務管理。如果沒有指定事務的傳播行為,Spring默認采用REQUIRED。

創建表sql(三個賬戶,初始化金額都為1000)

項目所需jar包

技術分享圖片

??因為我的jdk是1.8,如果spring的版本用spring3.X的話,后面會出現參數不匹配異常java.lang.IllegalArgumentException,所以我換成了Spring4。

連接參數

技術分享圖片

日志文件log4j.properties

創建業務層接口和實現類

創建DAO層接口和實現類

這里讓Dao層實現類繼承JdbcDaoSupport,這樣一來就可以將JdbcTemplate注入其中,不過我是直接將DataSource連接池注入其中,這時我的DAO實現類就可以創建一個JdbcTemplate,然后操作的相關內容。

??當然也可以不選擇讓DAO層繼承JdbcDaoSupport,而是把JdbcTemplate作為他的屬性進行操作,通過setter方法利用JdbcTemplate的構造方法將dataSource傳入。

配置applicationContext.xml

要將c3p0的連接池注入DAO層實現類中,使其可以創建JdbcTemplate。

測試轉賬效果

讓測試運行于Spring測試環境中,并引入配置文件

注意Junit使用spring時,若spring沒加載到log4j就會報以下警告:

log4j:WARN No appenders could be found for logger(org.springframework.test.context.junit4.SpringJUnit4ClassRunner).log4j:WARN Please initialize the log4j system properly.

測試業務層類,在用注解 @Resource(name="accountService")和private AccountService accountService;默認按名稱進行裝配,名稱可以通過name屬性進行指定,如果沒有指定name屬性,當注解寫在字段上時,默認取字段名進行安裝名稱查找,如果注解寫在setter方法上默認取屬性名進行裝配。當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。 @Resource注解在字段上,這樣就不用寫setter方法了,并且這個注解是屬于J2EE的,減少了與spring的耦合。springaop注解事物


本文來自電腦雜談,轉載請注明本文網址:
http://www.rtcsln.tw/a/jisuanjixue/article-86311-1.html

相關閱讀
發表評論  請自覺遵守互聯網相關的政策法規,嚴禁發布、暴力、反動的言論

熱點圖片
拼命載入中...
黑龙江快乐十分开奖直播