06 AOP

作者: hayes0420 | 来源:发表于2018-05-28 07:21 被阅读0次

    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");
        }
    
    }
    
    

    相关文章

      网友评论

        本文标题:06 AOP

        本文链接:https://www.haomeiwen.com/subject/mjlwjftx.html