Spring AOP日志记录



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

Spring AOP

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

11.支持的切点指示符

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

AspectJ Source Weaving

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

最新更新