springboot aop那点事

本文深入探讨了SpringBoot中AOP的代理模式和通知执行顺序,解析了动态代理与cglib代理的应用场景,并介绍了如何通过@Order注解来指定通知执行的先后顺序,帮助读者更好地理解和运用AOP。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于aop是什么以及怎么使用aop我这里不在赘述。
主要是针对aop上遇到的小细节整理一下,以防自己忘记

1.代理模式

springboot的aop默认是用cglib代理,methodinvocationprocceedingpointcut中的ProxyMethodInvocation会传递一个cglibInvocation的class
如果把springboot的aop代理改成动态代理,那么可以采用动态代理的切点都会采用动态代理,没有借口实现的类(controller)会采用cglib

2.通知执行顺序

1.around_1进入
2.before_1
3.around_2进入
4.before_2
5.执行方法
6.around_2结束
7.after_2
8.afterreturning_2
9.around_1结束
10.after_1
11.afterreturning_1
对同一个切点进行aop拦截,两个通知谁先执行不一定
如果想要指定顺序请用@order注解

当抛异常的时候,around的结束和afterreturning不会执行,其他正常执行
1.around_1进入
2.before_1
3.around_2进入
4.before_2
5.执行方法
6.after_2
7.after_1

  try{
        try{
            //@Before
            method.invoke(..);
        }finally{
            //@After
        }
        //@AfterReturning
    }catch(){
        //@AfterThrowing
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值