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"/>
AOP應用之------測試方法運行時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.