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修改過]
相關文章
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Spring系列之事務的控制 註解實現+xml實現+事務的隔離等級SpringXML
- Spring-AOP事務Spring
- spring基於註解配置實現事務控制Spring
- SpringBoot(一) 如何實現AOP的許可權控制Spring Boot
- .NET Core 3.x 基於AspectCore實現AOP,實現事務、快取攔截器快取
- spring aop實現簡單的許可權控制功能Spring
- Asp.netCore 3.1控制器屬性注入and非同步事務Aop by AutoFacASP.NETNetCore非同步
- 【Spring】事務實現原理Spring
- Spring事務實現原理Spring
- Kafka事務實現原理Kafka
- MySQL事務實現原理MySql
- Spring AOP 日誌攔截器的事務管理Spring
- AOP的簡單實現
- Spring AOP的實現原理Spring
- Mybatis--事務控制MyBatis
- 關於Spring Aop和事務記錄Spring
- MogDB/openGauss如何實現事務的rollback
- MySQL是如何實現事務的ACIDMySql
- 【spring】事務底層的實現流程Spring
- 從JDBC到ORM的事務實現JDBCORM
- Spring——AOP實現Spring
- 分散式事務之資料庫事務與JDBC事務實現(一)分散式資料庫JDBC
- MongoDB 4.0 事務實現解析MongoDB
- 分散式事務(3)---RocketMQ實現分散式事務原理分散式MQ
- AOP的實現深入理解
- Spring AOP 的實現機制Spring
- Spring宣告式事務控制Spring
- Spring面試題--(隔離、事務、Aop/oop)Spring面試題OOP
- 分散式事務的幾種實現方式分散式
- MySQL實現事務的提交和回滾MySql
- AOP如何實現及實現原理
- Spring事務專題(五)聊聊Spring事務到底是如何實現的Spring
- 分散式事務(4)---RocketMQ實現分散式事務專案分散式MQ
- Spring AOP實現原理Spring
- 使用 libffi 實現 AOP
- 【Spring】AOP實現原理Spring
- Spring之AOP實現Spring
- Spring事務專題(四)Spring中事務的使用、抽象機制及模擬Spring事務實現Spring抽象