AOP實現事務控制的疑惑
最近接觸到AOP,想用其來實現事務控制,避免在很多地方寫重複的事務控制的程式碼.
我的大概想法是這樣的:在Service以外實現事務控制.由於目前使用了Struts2表現框架,於是想把事務控制在Action這一層實現.藉助Struts2的Interceptor,很快的寫了個事務控制的類.此時有個問題困住了我.比如在Action1中呼叫了兩個Service(Service1,Service2)的方法(Service1.add(),Service2.add()),如果Service1.add()執行成功,但在Service2.add()中丟擲了業務異常(並不是什麼系統異常,比如是使用者填寫的東西不符合什麼規範之類的業務邏輯),此時我在Action1中肯定要捕獲這個業務異常,返回給客戶一個提示資訊頁面.但是為了回滾事務,我要丟擲個異常讓Interceptor捕獲,好回滾事務.但是一旦讓Interceptor處理了異常,其後的頁面轉發就成了問題.
問題1.我想讓Action來決定顯示的頁面,而不是讓Interceptor來決定.(因為Interceptor在Action之上,所以只能做一些公共頁面的轉發).
問題2.在Action處理業務異常後,不得不考慮到為了回滾事務,要向Interceptor丟擲異常,我感覺這樣沒有達到我先前的預期,也就是在Action這裡可以不用考慮事務.
希望大家指教
我的大概想法是這樣的:在Service以外實現事務控制.由於目前使用了Struts2表現框架,於是想把事務控制在Action這一層實現.藉助Struts2的Interceptor,很快的寫了個事務控制的類.此時有個問題困住了我.比如在Action1中呼叫了兩個Service(Service1,Service2)的方法(Service1.add(),Service2.add()),如果Service1.add()執行成功,但在Service2.add()中丟擲了業務異常(並不是什麼系統異常,比如是使用者填寫的東西不符合什麼規範之類的業務邏輯),此時我在Action1中肯定要捕獲這個業務異常,返回給客戶一個提示資訊頁面.但是為了回滾事務,我要丟擲個異常讓Interceptor捕獲,好回滾事務.但是一旦讓Interceptor處理了異常,其後的頁面轉發就成了問題.
問題1.我想讓Action來決定顯示的頁面,而不是讓Interceptor來決定.(因為Interceptor在Action之上,所以只能做一些公共頁面的轉發).
問題2.在Action處理業務異常後,不得不考慮到為了回滾事務,要向Interceptor丟擲異常,我感覺這樣沒有達到我先前的預期,也就是在Action這裡可以不用考慮事務.
希望大家指教
[該貼被power1128於2008-04-10 15:15修改過]
相關文章
- 關於jdon 的事務處理疑惑?
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Spring系列之事務的控制 註解實現+xml實現+事務的隔離等級SpringXML
- Spring-AOP事務Spring
- spring基於註解配置實現事務控制Spring
- spring aop實現許可權控制,路徑控制Spring
- EAS_AOP分散式事務分散式
- MySQL innodb 事務的實現MySql
- 在C#中使用COM+實現事務控制 (轉)C#
- oracle實驗記錄 (事務控制)Oracle
- 事務中有webservice的控制Web
- SpringBoot(一) 如何實現AOP的許可權控制Spring Boot
- spring aop實現簡單的許可權控制功能Spring
- 理解資料庫連線池和ThreadLocal實現的事務控制資料庫thread
- 什麼是AOP系列之二:AOP與許可權控制實現(轉)
- MySQL事務實現原理MySql
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- Spring中的事務控制Spring
- Spring事務管理—aop:pointcut expression解析SpringExpress
- Mybatis--事務控制MyBatis
- 分散式事務之資料庫事務與JDBC事務實現(一)分散式資料庫JDBC
- 從JDBC到ORM的事務實現JDBCORM
- Asp.netCore 3.1控制器屬性注入and非同步事務Aop by AutoFacASP.NETNetCore非同步
- AOP的簡單實現
- MongoDB 4.0 事務實現解析MongoDB
- Spring事務實現原理Spring
- 【Spring】事務實現原理Spring
- 事務機制如何實現
- 分散式事務(3)---RocketMQ實現分散式事務原理分散式MQ
- oracle set transaction read only與dbms_transaction實現事務transaction控制Oracle
- Spring AOP 日誌攔截器的事務管理Spring
- 關於Spring Aop和事務記錄Spring
- 分散式事務(4)---RocketMQ實現分散式事務專案分散式MQ
- Oracle事務控制總結Oracle
- MySQL是如何實現事務的ACIDMySql
- 分散式事務的幾種實現方式分散式
- MySQL實現事務的提交和回滾MySql
- 【spring】事務底層的實現流程Spring