【问题标题】:How to advise static methods using Spring AOP?如何使用 Spring AOP 建议静态方法?
【发布时间】:2019-05-03 07:01:38
【问题描述】:

在执行类的静态方法之前和之后需要进行一些日志记录。我尝试使用 Spring AOP 来实现这一点,但它不起作用,并且对于正常方法它正在起作用。 请帮助我了解如何实现这一点,如果可以使用注释来完成,那就太好了。

【问题讨论】:

    标签: java spring spring-aop pointcut


    【解决方案1】:

    也许您应该在使用 Spring AOP 之前阅读文档。这句话适用于任何工具。如果您阅读它,您会注意到 Spring AOP 是基于dynamic proxies,这意味着它仅适用于

    • 非静态公共方法(如果您使用 CGLIB 而不是 JDK 代理,则还包括受保护或包范围的方法)
    • 在 Spring bean 上。

    手册还指出,如果您需要更强大的 AOP 解决方案,可以use full AspectJ via load-time weaving (LTW)。在这种情况下,您还可以拦截 Spring AOP 用户梦寐以求的静态方法和更多东西。

    【讨论】:

      【解决方案2】:

      请通过以下链接查看另一个堆栈溢出帖子

      Set an AspectJ advise for static method

      希望这是有用的。谢谢

      【讨论】:

      • 我们可以用它来拦截 3rd 方 api 的静态方法吗?
      • 是的,我们可以。因为我们正在访问类级别的成员。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多