使用Spring AOP记录好主意吗?

Oma*_*eji 30 java logging aop spring spring-aop

我在春天读了目前和用于使用AOP的测井方法调用的开始和结束的一个例子.

我还读到使用AOP会影响性能.

对于这种类型的日志记录,使用Spring AOP是个好主意吗?我的理解是Spring使用Dynamic AOP会更好地将静态AOP(如AspectJ)用于这种类型的AOP.

Curently在我工作的公司的编码策略需要记录的一个可笑的量,我想,以减少日志代码的ammount的我必须写,并提高我的代码的可读性.

我吠叫错了树吗?

Ror*_*ick 35

我使用Spring AOP实现日志记录,所以我分享了我的观察结果:

  • 性能影响是不够的,它不如记录本身的影响
  • 如果在Spring配置中配置了方面,则可以在必要时完全禁用日志记录代码
  • 随着堆栈跟踪变得更长,调试变得更成问题
  • 这样的决定足以影响设计.您不仅要获得一堆接口和方面类,而且生产类必须非常"精简".不要忘记,您无法拦截对非公开方法的调用.自我调用(甚至是公共方法)也不能被截获(因为你使用裸this柄而不是AOP包裹的句柄)因此无法记录.因此,所有日志记录只能在接口边界上发生.(这涉及使用基于代理的方面编织,有一个运行时子类与cglib的选项,但我没有使用它)
  • 写切入点可能非常棘手.IntelliJ Idea有助于确定切入点建议哪些方法.
  • 一般来说,我喜欢这种方法,并认为它值得使用,但它似乎远比我预期的复杂


Boz*_*zho 15

阅读此博客文章,了解您的性能问题.

考虑AOP的方法是首先提供所提供的功能优势.如果您需要自动记录并且AOP适合它 - 那就去吧.

也就是说,如果需要细粒度测井,当然,加载时间编织是首选.