1、引入aop maven依賴
注意:(1) 去除默認logging組件,因爲我們框架已經更改使用log4j2;
(2)引入依賴後AOP默認開啓,無需再添加開啓aop註解
2、聲明aop切面處理類(切面處理操作實現類) @Aspect @Component @Order(index)
注:怎樣聲明一個自定義註解?要用到4個元註解:(具體實現方式不詳細說明)
-
註解保留位置 @Retention(RetentionPolicy.RUNTIME) RetentionPolicy.RUNTIME、SOURCE、CLASS
-
註解作用目標 @Target(ElementType.METHOD) ElementType.TYPE、METHOD、FIELD、......
-
該註解將被包含在javadoc中 @Document
-
子類可以繼承父類中的該註解@Inherited
(2)execution表達式
-
execution(public * com.chn.frameweb.business.service.demo.demoServiceImpl.*(..)))
-
execution(public * com.chn.frameweb.business.service.demo.*.*(..)))
-
詳解 :
-
第一個 public 表示方法的修飾符,可以用*代替
-
第一個 * 表示 返回值,*代表所有
-
public * com.chn.frameweb.business.service.demo.* 包路徑,.*表示路徑下的所有包;
也可指定具體的類com.chn.frameweb.business.service.demo.demoServiceImpl
-
第三個.* 表示路徑下所有類或指定的類下, 類的所有方法(也可指定特定方法)
-
(..) 表示不限方法參數
4、設置切面處理時間及綁定切點
-
@AfterReturning :方法執行後開始處理, pointcut="" 綁定切點
-
@Before :方法執行前開始處理,value="" 綁定切點
5、@order配置參數說明
@order(index),index取值(0,1,2,3,......)
-
org.springframework.core.annotation.Order;
-
@Order的作用域可以是類、方法、類成員
-
註解類,i值是,值越小,優先級越高
-
註解AOP方法: @Before 是i值越小,優先級越高; @After或者@AfterReturning 中,i值越大,優先級越高