Spring AOP学习笔记--Advice执行顺序

一、Advice执行顺序

如果多个Advice和同一个JointPoint连接,我们需要指明每一个Advice的执行顺序,那么我们就需要分两种情况讨论,

  • 第一种是如果Advice在同一个Aspect当中,那么执行的顺序是按照Advice在Aspect的声明顺序执行的。
  • 如果Advice在不同的Aspect当中,那么执行的顺序是需要将Aspect继承Ordered这个类,然后覆写getOrder方法

二、Advice在同一个Aspect中

AdviceOrder.java 在这个Aspect中我们指明了Pointcut和Advice的类型,我们可以看到,两个Before类型的Advice切入到了同一个JointPoint上,两个AfterReturning类型的Advice切入到了同一个JointPoint上。

package com.zbt.day04;

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

@Aspect
public class AdviceOrder {
   
    @Pointcut("execution(* com.zbt.day04.*.*(..))")
    public void methodPoint(){
    }
    @Before("methodPoint()")
    public void beforeAdviceI(){
        System.out.println("before advice I 执行了");
    }
    @Before("methodPoint()")
    public void beforeAdviceII(){
        System.out.println("before advice II 执行了");
    }

    @AfterReturning("methodPoint()")
    public void afterReturningI(){
        System.out.println("After Returning Advice I 执行了");
    }
    @AfterReturning("methodPoint()")
    public void afterReturningII(){
        System.out.println("After Returning Advice I 执行了");
    }
}

TargetClass.java 这是一个目标类,其中的sayHello方法是JointPoint

package com.zbt.day04;

public class TargetClass {
    public void sayHello(){
        System.out.println("Hello,What a good day!");
    }
}

XML配置文档

<?xml version="1.0" encoding="UTF-8&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值