1、在spring-mvc.xml配置文件中打開切面開關:
<aop:aspectj-autoproxy proxy-target-class="true"/>
注意:proxy-target-class屬性值決定是基於接口的還是基於類的代理被創建。如果proxy-target-class 屬性值被設置為true,那么基於類的代理將起作用(這時需要cglib庫)。如果proxy-target-class屬值被設置為false或者這個屬性被省略,那么標准的JDK 基於接口的代理將起作用。即使你未聲明 proxy-target-class="true" ,但運行類沒有繼承接口,spring也會自動使用CGLIB代理。高版本spring自動根據運行類選擇 JDK 或 CGLIB 代理。
2、定義攔截哪些操作類型:比如增加、修改、刪除
3、定義攔截操作的切面實現類:
說明:
1.@aspect:表明是切面類
2.@Pointcut(value = "execution (* com.cms.admin.web.controller.*.*(..))"):定義統一攔截的切入點,其中第一個*表示任意返回類型,第二個*表示任意類名,假如第二個*前面是兩個.則表示包括包里面的子包,第三個*表示任意方法名,后面的小括號表示任意參數值
3.//@Before("controllerAspect()"):表示攔截方法執行前的動作
4.@Around("controllerAspect()"):表示方法執行前后的動作,注意要有返回值
5.@AfterReturning(value = "controllerAspect()", returning = "rtv",argNames="rtv"):表示攔截方法執行完成之后的動作,pointcut/value:這兩個屬性的作用是一樣的,它們都屬於指定切入點對應的切入表達式。一樣既可以是已有的切入點,也可直接定義切入點表達式。當指定了pointcut屬性值后,value屬性值將會被覆蓋。returning:該屬性指定一個形參名,用於表示Advice方法中可定義與此同名的形參,該形參可用於訪問目標方法的返回值。除此之外,在Advice方法中定義該形參(代表目標方法的返回值)時指定的類型,會限制目標方法必須返回指定類型的值或沒有返回值。注意:雖然AfterReturning增強處理可以訪問到方法的返回值,但它不可以改變目標方法的返回值
6.@AfterThrowing("controllerAspect() && args(ex)"):表示捕捉方法執行異常的動作,加上args(ex) 中間是AfterThrowing方法參數的名字。