1. 程式人生 > >spring學習系列 --- AOP學習

spring學習系列 --- AOP學習

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 類,來捕獲呼叫函式中的異常,引數,類別名,方法名等等。