有没有办法不使用spring AOP在方法中执行一行?

时间:2013-06-10 13:48:37

标签: java spring log4j aop aspect

场景:我有一个应用程序,我们注意到一些不必要的日志记录,因为该服务器上的内存使用率高达90%,这根本不可取,并且是对prod支持的关注。罪魁祸首是一个类,我有一堆日志语句,如log.info,在prod环境中,我没有访问此类,但我可以访问spring config xml。我可以将一个方面应用于类/特别是一个方法来停止执行log.info语句吗?

1 个答案:

答案 0 :(得分:0)

我同意您的问题下面的评论:只需重新配置日志记录。

从技术上讲,使用Spring AOP,您只能拦截对Spring bean方法的调用或执行。因此,除非您的日志记录调用未封装在Spring bean中,否则Spring AOP将无用。

使用AspectJ,您可以将LTW(加载时编织)应用于日志库,并阻止执行特定控制流调用的日志记录方法。您也可以通过编织应用程序代码然后在特定控制流中阻止对日志记录方法的调用来执行相同的操作。

免责声明:虽然这方面很容易实现,但我不知道您的生产管理员是否允许您在目标系统上使用AspectJ。即使您将方面编译到您自己的生产代码中,至少您还需要在应用程序的类路径上使用AspectJ运行时(aspectjrt.jar)。