切面类LoggingAespect package com.aoe.aop;import java.util.Arrays;import org.apache.log4j.Logger;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lan
package com.aoe.aop; import java.util.Arrays; import org.apache.log4j.Logger; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; @Aspect @Component public class LoggingAespect { private long start; private long end; private static Logger logger = Logger.getLogger("logDailyFile"); @Pointcut("execution(* com.xukun.controller.*.*(..))") public void pointCut_(){ } @Before(value="pointCut_()") public void beforeMethod(JoinPoint joinPoint){ String methodName = joinPoint.getSignature().getName(); Object args = Arrays.asList(joinPoint.getArgs()); start = System.currentTimeMillis(); logger.info("The method:"+methodName +" begins with "+ args); } //后置通知:在目标方法之后(无论是否发生异常),执行的通知, //在后置通知中还不能访问目标方法执行的结果。执行结果须在返回通知中访问。 @After(value="pointCut_()") public void afterMethod(JoinPoint joinPoint){ String methodName = joinPoint.getSignature().getName(); end = System.currentTimeMillis(); logger.info("The method:"+ methodName+" ends"+"执行业务方法共计:" + (end - start) + "毫秒"); } //返回通知:在目标方法正常结束执行后的通知 @AfterReturning(value="pointCut_()",returning="result") public void afterRunningMethod(JoinPoint joinPoint , Object result){ String methodName = joinPoint.getSignature().getName(); logger.info("The method:"+ methodName+" ends with the Result "+ result); } //环绕通知 //@Around(value="pointCut_()") public Object aroundAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { Object result = null; String methodName = proceedingJoinPoint.getSignature().getName(); Object args = Arrays.asList(proceedingJoinPoint.getArgs()); try { //前置通知 logger.info("Arround:The method "+methodName +" begins with "+args); long start = System.currentTimeMillis(); result = proceedingJoinPoint.proceed(); //后置通知 long end = System.currentTimeMillis(); logger.info("Arround:The method "+ methodName+" ends"+","+"执行业务方法共计:" + (end - start) + "毫秒。"); } catch(Exception e){ e.printStackTrace(); //异常通知 logger.info("Arround:异常监控 "+ methodName+"occurs exception:"+e); throw new RuntimeException(e); //不抛出异常的话,异常就被上面抓住,执行下去,返回result,result值为null,转换为int } //返回通知 logger.info("Arround:The method "+ methodName+" ends with the Result "+ result); return result; } //异常通知 @AfterThrowing(value="pointCut_()",throwing = "e") public void throwingAdvice(JoinPoint joinPoint, Exception e) { String methodName = joinPoint.getSignature().getName(); logger.info("异常监控:" + methodName + " occurs exception: " + e); } }sping-mvc注解开启