在乙個複雜的後台業務處理中,總是會出現通過各種邏輯處理過程中,產生對很多表的增刪改操作、呼叫其他模組介面、訊息佇列等,如果直接邊處理邊對錶修改,則@transactional事務管理的範圍就很大,需要對很多方法新增該注釋,為了讓事務管理的範圍盡量減小,就將所有的需要的操作全部快取起來,再統一處理。
我使用的map> 區域性變數的方式快取起來,在分析需求的時候,已經明確了業務會對哪些資料造成變化,使用列舉定義出來,作為map的key,value就是需要對應的表或者訊息的內容。增加一條處理記錄
呼叫方法 addelement(map, [key], (t) [element]);
/**
* 資料集合中新增元素
**@param map 資料集合
*@param key
*@param element 新元素
*@param
*/private
void
addelement(map> map, tableem key, t element)
listts = map.get(key);
if (null == ts) else
}
查重,去重由於我的業務存在不同的業務會影響同乙個表的問題,我的業務唯一健都是recordid,呼叫方法 ([element]) getelement(map, [key], [primary_key])
private static t getelement(map
<
string, list
>
map, string key, string recordid)
for (t t : ts)
} catch (nosuchmethodexception | illegalacces***ception | invocationtargetexception e)
}return
null;
}
按前面方法統一獲取到之後,統一在乙個方法內,註解@transacal遍歷處理map即可;
這種方式,業務處理較為清晰,便於維護,但不知道是否存在其他問題?
在SpringMVC中統一處理異常
在springmvc中,允許開發人員自定義方法,用於統一處理異常,以至於某些異常可能在多種處理請求的過程中都可能出現,但是,只需要編寫1次處理的 即可!該機制的核心在於 可能出現異常的 處理請求的方法,並不通過 顯式的處理異常!則等同於這些處理請求的方法會將異常丟擲,而springmvc框架在呼叫這...
統一處理異常
1.controlleradvice 註解定義全域性異常處理類 controlleradvice public class globalexceptionhandler 2.exceptionhandler 註解宣告異常處理方法,註解的方法的引數列表裡,還可以宣告很多種型別的引數 controlle...
Web應用架構 錯誤統一處理, 和事務統一處理
因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...