我爱编程

06 AOP

2018-05-28  本文已影响0人  hayes0420

Spring 提供了四种AOP支撑:
基于代理的经典spring aop;
纯POJO切面
@AspectJ注解驱动的切面
注入式AspectJ切面
前三种都是Spring AOP的变体。

下图是一个切点表达式,代表perform方法执行时触发通知的调用


image.png

进入主题,spring实战学习,如何切面,粗读了一遍,敲了一些代码,比较容易理解,但是没测试看不到结果感觉很虚,这一章暂时放着,闷头跟着书实现一个web应用程序,再回头阅读效果可能更好。

package concert;

import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect
public class Audience {
    @Pointcut("execution(** concert.Performance.perform(..))")
    public void performance() {}
    
    @Before("performance()")
    public void silenceCellPhones(){
        System.out.println("Silenceing cell phones");
    }
    @Before("performance()")
    public void takeSeats(){
        System.out.println("take a seats");
    }
    @AfterReturning("performance()")
    public void applause(){
        System.out.println("拍手 clap");
    }
    @AfterThrowing("performance()")
    public void demandRefund(){
        System.out.println("demanding a refund");
    }

}

上一篇下一篇

猜你喜欢

热点阅读