spring aop根據執行的時間點可以分為around、before和after幾種方式。
around為方法前後均執行
before為方法前執行
after為方法後執行
這裡只對around的方式進行介紹。本文只是摘錄相應的思路,許多輔助類和方法不一一給出。因此下述方法並不能正常執行。
定義忽略許可權檢查註解類
@documented
@target(elementtype.method)
@retention(retentionpolicy.runtime)
public @inte***ce ignorepermission
定義需要許可權檢查的類及方法
@restcontroller
public class testcontroller extends basecontroller
public responseentity deletetest(@requestparam(name = "accesstoken") string accesstoken)
/*** 帶了ignorepermission註解,不進行許可權檢查。 */
@ignorepermission
public responseentity gettestlist(@requestparam(name = "accesstoken") string accesstoken) }
定義切面aop類
public class permissionaspect
public void settokenname(string tokenname)
this.tokenname = tokenname; }
//proceedingjoinpoint只有around的方式才可用
//joinpoint則around、before和after均可用
public object execute(proceedingjoinpoint joinpoint) throws throwable
// 檢查 該使用者是否已經開通
// 從 request header 中獲取當前 token
string token = stringutils.isblank(request.getheader(tokenname)) ? request.getparameter("accesstoken") : request.getheader(tokenname);
string userid = tokenmanager.getuserid(token);
testbasic testbasic = basicservice.findbyuserid(userid);
try
if (testconstant.test_basic_is_pass_passed != testbasic.getispass()) else if (testconstant.test_basic_is_pass_deny == testbasic.getispass())
responseentity.failure(responseconstant.code_000, tips);
processing = false;
throw new exception(message); }
} catch (exception e) finally else }
} }配置檔案的配置
開啟切面支援
springmvc-context.xml中開啟如下配置
定義 bean
aop配置
... ...
注:上述**只是實現思路的摘錄,**不能直接執行。
基於配置檔案實現Spring AOP日誌管理
spring aop 是基於面向切面的程式設計,它能夠使得我們專注於我們的業務處理,將一些其他的東西由它來統一完成,程式的侵入性很小,所以被廣泛應用,至於實現原理我就不多說了,兩個字 下面說說標題所示的應用,記錄日誌,什麼時候記錄日誌,都記錄什麼?想想,可不就是在呼叫方法的時候寫日誌嘛,之前如果使用...
Spring AOP 通過配置檔案方式
1.寫乙個切面類 securitycontrol,其中有個方法 public class securitycontrol private void checksecurity joinpoint joinpoint object obj joinpoint.getargs for int i 0 i...
Spring AOP 基於XML檔案的配置
spring aop的配置可以基於註解,也可以基於xml檔案。前面幾篇都是使用註解的方式。下面介紹下使用xml檔案如何配置 使用的測試類和切面類都類似。只需要屬於aop的註解去掉即可。下面是aop的xml配置 1 xml version 1.0 encoding utf 8 2 beans xmln...