在專案開發中往往需要記錄一些使用者操作的系統日誌到資料庫,而不僅僅是記錄在檔案中或者log4j上。第一種是最簡單最原始也是最繁瑣最笨的辦法:即每個需要記錄的操作入口方法中去呼叫新增日誌的介面。第二種是採用spring的攔截器進行方法攔截:建立一個攔截器:<mvc:interceptor><mvc:mapping path="/**"/><bean></bean></mvc:interceptor>新建一個攔截器的class繼承spring web的HandlerInterceptorAdapter類,在spring4中該類有四個方法可以進行重寫,如:preHandle:它會在處理方法之前執行,可以用來做一些編碼處理、安全限制之類的操作。postHandle:它是在方法執行後開始返回前執行,可以進行日誌記錄、修改ModelView之類的操作。afterCompletion:最後執行,無論出錯與否都會執行這個方法,可以用來記錄異常資訊和一些必要的操作記錄。afterConcurrentHandlingStarted:controller方法非同步開始執行時就開始執行這個方法,而postHandle需要等到controller非同步執行完成後再執行。需要注意的是spring的攔截器無法獲取處理函式的引數值。第三種就是採用spring的AOP配置註解進行攔截:首先在springAOP中的三個概念:advice、pointcut、advisor。新建一個類,無需任何繼承和實現介面,只需要在類上加入註解@Aspect。建立一個切入點的方法,註解@Pointcut,然後在建立一個方法,配置需 要通知的型別,透過JoinPoint相關類來獲取引數值和請求的內容。具體的切入點和通知型別的表示式需參考springAOP相關的表示式語法。然後 需要在配置檔案配置<aop:aspectj-autoproxy>,即aspectj動態代理。具體的日誌記錄實現、可以採用匹配請求地址的方法進行記錄(因為查詢操作可能不需要記錄),哪些需要記錄的請求可以透過配置檔案來配置,也可以透過註解來實現。或者是透過自定義註解來實現日誌攔截,透過Pointcut攔截具體的註解而達到按需記錄日誌的功能。
在專案開發中往往需要記錄一些使用者操作的系統日誌到資料庫,而不僅僅是記錄在檔案中或者log4j上。第一種是最簡單最原始也是最繁瑣最笨的辦法:即每個需要記錄的操作入口方法中去呼叫新增日誌的介面。第二種是採用spring的攔截器進行方法攔截:建立一個攔截器:<mvc:interceptor><mvc:mapping path="/**"/><bean></bean></mvc:interceptor>新建一個攔截器的class繼承spring web的HandlerInterceptorAdapter類,在spring4中該類有四個方法可以進行重寫,如:preHandle:它會在處理方法之前執行,可以用來做一些編碼處理、安全限制之類的操作。postHandle:它是在方法執行後開始返回前執行,可以進行日誌記錄、修改ModelView之類的操作。afterCompletion:最後執行,無論出錯與否都會執行這個方法,可以用來記錄異常資訊和一些必要的操作記錄。afterConcurrentHandlingStarted:controller方法非同步開始執行時就開始執行這個方法,而postHandle需要等到controller非同步執行完成後再執行。需要注意的是spring的攔截器無法獲取處理函式的引數值。第三種就是採用spring的AOP配置註解進行攔截:首先在springAOP中的三個概念:advice、pointcut、advisor。新建一個類,無需任何繼承和實現介面,只需要在類上加入註解@Aspect。建立一個切入點的方法,註解@Pointcut,然後在建立一個方法,配置需 要通知的型別,透過JoinPoint相關類來獲取引數值和請求的內容。具體的切入點和通知型別的表示式需參考springAOP相關的表示式語法。然後 需要在配置檔案配置<aop:aspectj-autoproxy>,即aspectj動態代理。具體的日誌記錄實現、可以採用匹配請求地址的方法進行記錄(因為查詢操作可能不需要記錄),哪些需要記錄的請求可以透過配置檔案來配置,也可以透過註解來實現。或者是透過自定義註解來實現日誌攔截,透過Pointcut攔截具體的註解而達到按需記錄日誌的功能。