我正在寻找一个功能或软件,他将允许我轻松地分析我的方法执行时间,并选择通过包过滤器分析的内容.
我知道,它是分析器101.我使用TPTP分析器.但我对它并不满意.坦率地说,我只是不明白它是如何工作的,当我描述我的应用程序(在分析模式下启动服务器)时,它将永远无所事事.(好吧,不是我的期望:简单的执行时间输出)
所以我用系统时间自己进行分析(在方法的开头和结尾添加一行).也不是那么坏.
我的问题是:我想在使用Spring AOP调用方法之前和之后测量系统时间,你能给我指点吗?这是一个好/坏的主意?代码库非常大,我们没有很多单元测试,难道不是"危险"吗?
我不是要求代码,我想我可以用这种链接自己做:http: //static.springsource.org/spring/docs/2.5.x/reference/aop.html
但如果你有一个很好的教程(以前从未做过AOP,只知道这个概念),我就接受了.
在Spring中有一个内置的支持.
我试图寻找教程,但令人惊讶的是我没有找到它,所以我会尝试在这里解释它.(编辑:我在这里将这个例子添加到我的博客中)
基本上你需要的是像这样扩展CustomizableTraceInterceptor类:
public class MyTraceInterceptor extends CustomizableTraceInterceptor { protected void writeToLog(Log logger, String message, Throwable ex) { if (ex != null) { logger.info(message, ex); } else { logger.info(message); } } protected boolean isInterceptorEnabled(MethodInvocation invocation, Log logger) { return true; } }
此类包装您的bean并输出方法调用信息,包括参数,返回值和执行时间到日志.通过更改writeToLog()
方法,您可以控制要输出数据的位置以及严重程度.
现在您需要一些XML来实际选择要包装的bean:
traceInterceptor
基本上你定义要用"beanNames"中的通配符包装的bean,"order"控制包装的顺序 - 如果你没有其他AOP类,你可以删除它.如果更改enterMessage和exitMessage属性,也可以更改输出格式.
这应该足以让你开始.如果您需要澄清,请不要犹豫.