Spring AOP日志记录

时间:2017-10-31 18:17:12

标签: spring-boot logging aop aspectj spring-aop

我在Spring框架上运行了一个j2ee Web应用程序。我想使用log4j和Spring的AOP实现日志记录。我能够使用自定义注释记录公共方法。我无法使用自定义注释记录私有方法。任何人都可以参考如何为私有方法实现自定义注释。

1 个答案:

答案 0 :(得分:1)

Spring AOP

Spring AOP不支持拦截私有方法。

11。 Supported Pointcut Designators

  

由于Spring的AOP框架基于代理的特性,目标对象内的调用根据定义不会被截获。对于JDK代理,只能拦截代理上的公共接口方法调用。使用CGLIB,代理上的公共和受保护方法调用将被拦截,甚至包括必要的包可见方法。但是,通过代理进行的常见交互应始终通过公共签名进行设计。   请注意,切入点定义通常与任何截获的方法匹配。如果切入点严格意义上是公开的,即使在通过代理进行潜在非公共交互的CGLIB代理方案中,也需要相应地定义切入点。   如果您的拦截需要包括目标类中的方法调用甚至构造函数,请考虑使用Spring驱动的本机AspectJ编织而不是Spring的基于代理的AOP框架。这构成了具有不同特征的不同AOP使用模式,因此在做出决定之前一定要先熟悉编织。

AspectJ源编织

您可以利用AspectJ源代码编织拦截私有方法。 Here是一个完整的工作示例。