1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| package com.mycompany.financial.nirvana.core.aspect;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component;
import java.util.Arrays;
@Aspect @Component public class MapperAspect { private static final Logger logger = LoggerFactory.getLogger(MapperAspect.class);
@AfterReturning("execution(* com.mycompany.financial.nirvana..*Mapper.*(..))") public void logServiceAccess(JoinPoint joinPoint) { logger.info("Completed: " + joinPoint); }
@Pointcut("execution(* com.mycompany.financial.nirvana..*Mapper.*(..))") private void pointCutMethod() { }
@Around("pointCutMethod()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { long begin = System.nanoTime(); Object obj = pjp.proceed(); long end = System.nanoTime();
logger.info("调用Mapper方法:{},\n参数:{},\n执行耗时:{}纳秒,\r\n耗时:{}毫秒", pjp.getSignature().toString(), Arrays.toString(pjp.getArgs()), (end - begin), (end - begin) / 1000000); return obj; } }
|