案例:测试业务层接口万次执行效率
案例:测试业务层接口万次执行效率
- 需求:任意业务层接口执行均可显示其执行效率(执行时长)
- 分析:
- 业务功能:业务层接口执行前后分别记录时间,求差值得到执行效率
- 通知类型选择前后均可以增强的类型——环绕通知
核心代码:
@Component
@Aspect
public class ProjectAdvice {
// 匹配业务层的所有方法
@Pointcut("execution(* com.charley.service.*Service.*(..))")
private void servicePt(){};
@Around("ProjectAdvice.servicePt()")
public void runSpeed(ProceedingJoinPoint pjp) throws Throwable {
// 一次执行的签名信息
Signature signature = pjp.getSignature();
// 通过签名获取执行类型(接口名)
String className = signature.getDeclaringTypeName();
// 通过签名获取执行操作名称(方法名)
String methodName = signature.getName();
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
pjp.proceed();
}
long end = System.currentTimeMillis();
System.out.println("万次执行:" + className + "." + methodName + "---->" + (end-start) + "ms");
}
}
补充说明:当前测试的接口执行效率仅仅是一个理论值,并不是一次完整的执行过程。