springboot aop那点事

关于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
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值