aop注解方式失效问题

13 篇文章 1 订阅

正常写法的场景下,可能还会失效的两类:

  • 被修饰的方法是 private or protected
  • 被修饰的方法是类的内部私有方法(然后因为上一条而被迫改成public)

解决方式:

  • private or protected ==> public func
  • 类中循环注入一个本类,然后调用内部方法从 (this.)func() 改为 classProxy.func() (这种写法可能单测就炸了,一个地方虽然少些代码,但是其他地方不能不出现里很多无关问题,/(ㄒoㄒ)/~~)

原因:

  • aop也是基于cglib动态代理,而这种反射的方式,默认都是仅支持 public (虽然可以通过某些方式绕过实现)
  • aop是动态代理,则说明所有需要被aop的地方,实际上也是强依赖代理对象的,也就说说,对于类的内部私有方法,只能通过 代理类.私有方法() 的途径来实现aop的切入,否则任何类似 当前类.私有方法() 都是不能被aop接管的

参考:

  • https://segmentfault.com/q/1010000014962043
  • http://xiaobaoqiu.github.io/blog/2015/05/18/spring-aopwu-xiao/
  • https://www.liaoxuefeng.com/wiki/1252599548343744/1339039378571298
  • https://segmentfault.com/a/1190000014346303
  • https://zhuanlan.zhihu.com/p/441096617
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值