Aop @Around
Posted eason-d
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Aop @Around相关的知识,希望对你有一定的参考价值。
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;
以上是关于Aop @Around的主要内容,如果未能解决你的问题,请参考以下文章