AOP应用之------测试方法运行时间

来源:互联网 发布:北京数据堂公司英语 编辑:程序博客网 时间:2024/06/04 01:24
package com.cplatform.tencent.task;import java.util.HashMap;import java.util.Map;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;import org.apache.commons.lang.time.StopWatch;public class MethodTimeActive implements MethodInterceptor {    /**     * 自定义map集合,key:方法名,value:[0:运行次数,1:总时间]     */    public static Map<String,Long[]> methodTest = new HashMap<String, Long[]>();    /**     * 拦截要执行的方法     */    public Object invoke(MethodInvocation invocation) throws Throwable {        // 创建一个计时器        StopWatch watch = new StopWatch();        // 计时器开始        watch.start();         // 执行方法        Object object = invocation.proceed();        // 计时器停止        watch.stop();        // 方法名称        String methodName = invocation.getMethod().getName();        // 获取计时器计时时间        Long time = watch.getTime();        if(methodTest.containsKey(methodName)) {            Long[] x = methodTest.get(methodName);            x[0]++;            x[1] += time;        }else{            methodTest.put(methodName, new Long[] {1L,time});        }        /**        *这里可以将map中的信息写入日志,或者是控制台以供观察        */        return object;    }}----------    <aop:config>        <aop:advisor id="methodTimeLog" advice-ref="methodTimeAdvice" pointcut="execution(* com.cplatform.tencent.sync..*.*(..))"/>          <aop:advisor id="methodTimeLog2" advice-ref="methodTimeAdvice" pointcut="execution(* com.cplatform.tencent.utils..*.*(..))"/>      </aop:config>      <bean id="methodTimeAdvice" class="com.cplatform.tencent.task.MethodTimeActive"/>
原创粉丝点击