SpringMVC、MyBatis 宣告式事務管理

xz43發表於2015-05-15
        Spring事務管理分為傳統的全域性事務管理和本地事務管理,使得在任何環境中都可以使用統一的事務管理模型,你可以寫一次程式碼,然後在不同的環境從你的程式碼裡面配置不同的事務管理策略,Spring提供兩種事務管理策略:一種是宣告式事務管理策略,另一種是程式設計式事務管理策略,這裡主要介紹宣告式事務管理策略。
        由於採用的是SpringMVC、 MyBatis,故統一採用了標註來宣告Service、Controller 。
        
由於伺服器啟動時載入配置檔案的順序為web.xml---applicationContext-*.xml(Spring的配置檔案)---springMVC-servlet.xml(SpringMVC的配置檔案),由於applicationContext-*.xmll配置檔案中Controller會先進行掃描裝配,但是此時service還沒有進行事務增強處理,得到的將是原樣的Service(沒有經過事務加強處理,故而沒有事務處理能力),所以我們必須在applicationContext-*.xml中不掃描Controller,此時applicationContext-*.xml中的配置如下:
<!-- applicationContext.xml中,去掉對controller的掃描 --&gt

    expression="org.springframework.stereotype.Controller" />

同理,在springMVC-servlet.xml 中去掉對 service的掃描,加入對controller的掃描


    expression="org.springframework.stereotype.Controller" />
    expression="org.springframework.stereotype.Service" />


最後,配置宣告式事務管理,事務的配置只有在 applicationContext.xml 中才會起作用
txManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        

<!-- spring declarative transaction management --&gt

    
        expression="execution(* com.mpto.*.biz.impl.*.*(..))" />
    


    
        
        
        
    


注意:事務作用在service 上,不能在service裡面加try catch去捕獲異常,否則不能被spring攔截到,事務將失效

 到此SpringMVC宣告式事務管理配置完成。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-1656378/,如需轉載,請註明出處,否則將追究法律責任。

相關文章