天天看點

Spring MVC 事務配置Spring MVC事務配置

要了解事務配置的所有方法,請看一下》

本文介紹兩種配置方法:

以下所使用環境為Spring4.0.3、Hibernate4.3.5

Entity類User.java,持久化類,對應資料庫表user

UserDAO.javar,表user的一些操作,其中屬性sessionFactory應該由Spring注入,如下:

UserService.java,業務實作類,如下

首先看一下xml配置,spring-hibernate.xml如下:

其中主要配置中是tx:advice和aop:config兩個配置節,以Spring

AOP的方式實作事務管理。

tx:advice配置了事務的管理者是transactionManager,同時tx:method也規定了如果方法名比對“add*”和“get*”方法時使用事務,propagation是設定事務的傳播級别。除了“add*”和“get*”方法,其他的方法的事務是隻讀的(典型地,對于隻執行查詢的事務你會将該屬性設為true,如果出現了更新、插入或是删除語句時隻讀事務就會失敗)

aop:config指定了一個aop:pointcut去引用上邊的advice。

這樣就通過AOP的攔截機制實作了事務,當然你還要用Spring的方式自己配置UserDAO和UserService。

第一步,首先看一下web.xml,如下:

第二步,spring-hibernate配置,見以下spring-hibernate.xml配置

第一節中xml配置事務中需要通過配置tx:advice和aop:config來增加事務的功能。此處采用全注釋方法,這兩個配置節就不需要了。

相應的需要在視圖解析配置中啟用注釋,如下lei-dispatcher-servlet.xml

UserDAO如下

UserService.java如下

這裡,方法名userCount上加入@Transactional,說明這個方法要啟用事務。如果類名UserService上加入@Transactional,則表明這個類中的所有方法都會啟用事務。

如果配有多個transactionManager,例如配置有transactionManager1,和transactionManager2,則可以通過@Transactional(“transactionManager1”),的方式指定使用哪個資料源的事務。

源代碼下載下傳: