首先,今天没什么事情还加班,唉,老大说我们加班太少,不爽一个。
因为有时间,所以想测试一下我们前几天写的项目执行的效率如何,根据aop应用规范,实现了这么个小功能,具体如下:
一,切面方法类:
/**
* 分析执行效率
* @author cyyu
*
*/
public class AnalysisMqEfficiency {
public Object analysis(ProceedingJoinPoint joinPoint) {
Long start = System.currentTimeMillis();
Signature s = joinPoint.getSignature();
String method = s.getName();
Object[] args = joinPoint.getArgs();
Object result = null;
try {
result = joinPoint.proceed(args);
} catch (Throwable e) {
e.printStackTrace();
}
Long end = System.currentTimeMillis();
System.out.println(method+"执行时间:"+(end-start)+"毫秒");
return result;
}
二,配置切面
<bean id="analysis" class="com.service.impl.consumer.AnalysisMqEfficiency"/>
<aop:config>
<aop:aspect ref="analysis">
<aop:pointcut id="analysisPointcut" expression="execution(* com.service.impl.consumer.JmsConsumerService.*(..))) "/>
<aop:around method="analysis" pointcut-ref="analysisPointcut"/>
</aop:aspect>
</aop:config>
启动tomcat插件,调用JmsConsumerService里面的方法的时候,就可以看到这个类里面每个方法的执行时间了,呵呵。
当然也可以用注解,@aspect,配置 <aop:aspectj-autoproxy/> ,我觉得xml配置也很方便,懒得去弄了。