Around 记录方法耗时
package com.gwzx.gwzxyw.log.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Aspect @Component public class TimeOperateLogAop { private Logger logger = LoggerFactory.getLogger(this.getClass()); //声明AOP切入点, //1:凡是使用了@TimeOperateLogAop的方法均被拦截 //@Pointcut("@annotation(com.gwzx.gwzxyw.log.annotation.TimeOperateLog)") //2:所有com.gwzx.gwzxyw.service包和所有子包里的任意类的任意方法的执行 @Pointcut("execution(* com.gwzx.gwzxyw.service..*.*(..))") public void log() { // System.out.println("我是一个切入点"); } @Around("log()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { long startTime = System.currentTimeMillis(); Object obj = null; //try { obj = pjp.proceed(); /*} catch (Throwable e) { e.printStackTrace(); } */ long endTime = System.currentTimeMillis(); MethodSignature signature = (MethodSignature) pjp.getSignature(); String methodName = signature.getDeclaringTypeName() + "." + signature.getName(); logger.info("方法:" + methodName + " 执行了 " + (endTime-startTime) + "ms"); return obj; } }