Spring AOP嵌套调用

10 篇文章 0 订阅

在做日志的时候,我通常是用aop的方式,以降低耦合性,保证业务代码的干净。

之前一直使用的挺好。今天开发反映在嵌套调用的时候日志没有起作用。

场景如下:

A调用B.a方法,B.a上的拦截是有用的。B.a里调用了B.b,在B.b上也同样有拦截注解,但是没有起作用。

其实这个没起作用是很正常的,因为Spring aop是基于bean的,而B.a里调用B.b,其中这个B已经不是spring中的代理产生的B,而是this,也就是解除代理壳子的B的真身,那么当然aop是不会起作用的。


要解决这个问题,最简单的方法是把自身注入到自身,用注入的这个自身去调用本方法。

或者你也可以不用spring aop而是用aspectj weaving,倒是可以测底的解决该问题。


其实到这里,也只是为了解决问题而解决问题。但是请细想下,为什么会出现这种情况?是不是设计不合理。

加业务日志的方法为什么不是一个完整而独立的业务,

加业务日志的方法为什么会被另一个业务方法调用,既然会调用,说明这个是一个公共的逻辑,是组成多个共同业务的公共逻辑,为什么不提出来?


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值