Spring學習之旅(八)Spring 基于AspectJ注解配置的AOP編程工作原理初探

2018-03-02 08:31:39來源:cnblogs.com作者:一張白紙的試煉人點擊

分享

由小編的上篇博文可以一窺基于AspectJ注解配置的AOP編程實現。

本文一下未貼出的相關代碼示例請關注小編的上篇博文《Spring學習之旅(七)基于XML配置與基于AspectJ注解配置的AOP編程比較》,在此不再贅述。

基于AspectJ注解配置的AOP編程,就是將所有配置信息都放在源代碼中以注解的方式標注。以與“基于XML配置”的AOP編程相區別。

1)Spring AOP注解就是依賴AspectJ來實現。因此使用Spring AOP注解,必須引入Aspectj框架及相應的包(aspectjrt.jar和aspectjweaver.jar)。

關于包的下載與引入,請參考小編的另外一篇博文《Spring學習之旅(五)極速創建Spring AOP java工程項目》

所以“基于AspectJ注解配置的AOP編程”實際上是:Spring AOP+AspectJ框架進行切面編程。

2)創建Spring配置文件,并在配置文件中引入aop命名空間和context命名空間,并配置“AspectJ的注解支持”,以及自動掃描的包的支持。

3)基于AspectJ注解聲明切面

即在設計切面類時,在java源代碼中采用注解標注“切面的相關信息”。

講一個java類聲明為一個切面:

首先,要注解成一個Bean,必須是IoC的Bean,可以是用@Component注解定義Bean。

其次,注解聲明為一個切面,使用@Aspect注解,同時在類的方法注解中給出與該切面相關的“通知”和“切入點”

然后,我們還可以指定切面的優先級,使用@Order(級別號)。級別號為大于等于0的整數,值越小,優先級越高。

4)基于AspectJ注解聲明通知

標注在切面類的方法上,AspectJ支持5種類型的通知注解:

@Before、@After、@AfterRunning、@AfterThrowing、@Around

舉一個例子:

    //注解為前置通知,并注解其切入點表達式    @Before("execution(* com.edu.aop.ArithmeticCalculator.*(..))")    public void validationArgs(JoinPoint joinPoint){        //具體方法實現  }    

在上篇博文中的實例中,給出了通知內切入點表達式的兩種寫法:一種具體確定的;一種泛化的。

當通知括號內除了切入點表達式屬性外,還有其他屬性時,應寫明屬性對應的屬性值。

比如:

@AfterRunning(pointcut="execution(* com.edu.aop.*.*(..))",returning="abc")    public void afterMethod(JoinPoint joinPoint,Object abc){        //具體方法實現    }    
@AfterThrowing(pointcut="execution(* com.edu.aop.*.*(..))",throwing="e")    public void afterMethod(JoinPoint joinPoint,ArithmeticException e){        //具體方法實現    }    

相關文章

    無相關信息

微信掃一掃

第七城市微信公眾平臺
捕鱼达人小游戏