package com.yirendai.infra.cicada.capture; import org.apache.http.client.methods.HttpUriRequest; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @Aspect public class HttpClientAop { /** * 拦截HttpClient的Post与Get方法. * */ @Around("execution(* org.apache.http.client.HttpClient.execute(..)) && args(httpUriRequest)") public Object around(final ProceedingJoinPoint proceedingJoinPoint, final HttpUriRequest httpUriRequest) throws java.lang.Throwable { final long startTime = System.currentTimeMillis(); final Object[] args = proceedingJoinPoint.getArgs(); final Object result = proceedingJoinPoint.proceed(args); if (httpUriRequest instanceof HttpUriRequest) { final String methodName = httpUriRequest.getMethod(); final String className = httpUriRequest.getURI().toString(); Tracer.getInstance().addBinaryAnnotation(className, methodName, (int) (System.currentTimeMillis() - startTime)); } return result; } }