spring學習系列 --- AOP學習
阿新 • • 發佈:2019-01-03
1、AOP是什麼? 面向切片程式設計
可以實現各種註釋功能,在某個函式呼叫之前、執行以及呼叫之後,實現某些功能,並且可以訪問該函式中的引數,以及打印出結果來。
使用的jar包主要是三個: AspectJ
aopalliance.jar
aspectjweaver-1.6.6.jar
spring-aspects-4.0.6.RELEASE.jar
在bean.xml檔案中,要申明一下 xmlns:aop="http://www.springframework.org/schema/aop"
後面在使用 AOP的時候,還要進行各種定義
2、AOP實現各種通知
前置通知、後置通知、環繞通知、返回通知以及異常通知
3、AOP config 實現
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <bean id="studentservice1" class="com.studentService"> </bean> <bean id="studentserviceaspect1" class="com.studentServiceAspect" > </bean> <aop:config> <aop:aspect id="dobefore" ref="studentserviceaspect1" > <aop:pointcut expression="execution(* com.studentService.*(..))" id="pc1"/> <aop:before method="doBefore" pointcut-ref="pc1" /> <aop:after method="doAfter" pointcut-ref="pc1" /> </aop:aspect> </aop:config> </beans>
aop:pointcut 切面,就是 通過 execution 這個來匹配要進行處理的函式, execution(* com.studentService.*(..)) 前面第一個表示的是 返回值, 後面是去匹配方法,而括號裡面的 .. , 表示的是函式傳人的引數數目可以是任意的。
環繞通知,可以在方法呼叫前呼叫,也可以在方法呼叫後呼叫,以及可以獲取方法返回值
異常通知,可以捕獲執行過程中的發生的異常資訊
4、在AOP相應的函式裡面,去寫各種通知,那麼使用
import org.aspectj.lang.JoinPoint;
JoinPoint 類,來捕獲呼叫函式中的異常,引數,類別名,方法名等等。