package tpf.aspect; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * Created by zipon on 2017/9/20. */ @Aspect @Component public class AspectTest { private final static Log logger = LogFactory.getLog(AspectTest.class); private String joinPointInfo(JoinPoint joinPoint) { return simpleJoinPointInfo(joinPoint) + " args:" + Arrays.toString(joinPoint.getArgs()); } private String simpleJoinPointInfo(JoinPoint joinPoint) { return joinPoint.getTarget().getClass() + "#" + joinPoint.getSignature().getName(); } //定义切点 @Pointcut("execution(* tpf.controller.loginController.* (..))") public void cutPublicMethod() { } @Before("cutPublicMethod()") public void logBefore(JoinPoint pjp) throws Throwable { } @AfterReturning("cutPublicMethod()") public void logAfter(JoinPoint pjp) throws Throwable { } @Around("cutPublicMethod()") public Object consumingAround(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("**************登陆开始**************"); String joinPointInfo = joinPointInfo(joinPoint); String simpleJoinPointInfo = simpleJoinPointInfo(joinPoint); long startTime = System.currentTimeMillis(); logger.info("[API_START]" + joinPointInfo); Object[] args = joinPoint.getArgs(); Object obj = joinPoint.proceed(args); // logger.info("[API_END]" + simpleJoinPointInfo); long endTime = System.currentTimeMillis(); long diffTime = endTime - startTime; Map<String, String> map = new HashMap<String, String>(); map.put("method", simpleJoinPointInfo); map.put("time", String.valueOf(diffTime)); map.put("start", String.valueOf(startTime)); map.put("end", String.valueOf(endTime)); //方法执行完,要用joinPoint.proceed(); joinPoint.proceed(); System.out.println("==================登陆结束后=================="); return obj; } }