本文主要是介绍springMVC使用@AspectJ的demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、配置文件中开启
<aop:aspectj-autoproxy proxy-target-class="true"/>
2、demo
1)创建一个Aspect类
@Component
@Aspect
public class AopLog {@Before("execution(* me.uniauto.service.impl.*.*(..))")public void beforLog(){System.out.println("-before log---");}@After("execution(* me.uniauto.service.impl.*.*(..))")public void afterLog(){System.out.println("-after log---");}
}
execution(* me.uniauto.service.impl.*.*(..))代表监视me.uniauto.service.impl包中的所有类的所有方法
2)创建PointcutLog文件
@Pointcut是切入点,指定需要注入代码的位置
@Component
@Aspect
public class PointcutLog {@Pointcut("execution(* me.uniauto.service.impl.*.*(..))" )public void inServiceLayer() { }
}
3)创建AdviceLog文件
@Before 使用Pointcut中的方法签名找到切入点
@Component
@Aspect
public class AdviceLog {@Before("me.uniauto.config.PointcutLog.inServiceLayer()")public void logInfo(JoinPoint jp){String className = jp.getThis().toString();String methodName = jp.getSignature().getName(); //获得方法名System. out.println("=====================================" );System. out.println("====位于:" +className);System. out.println("====调用" +methodName+"方法-开始!");Object[] args = jp.getArgs(); //获得参数列表if(args.length <=0){System. out.println("====" +methodName+"方法没有参数");} else{HttpServletRequest request = (HttpServletRequest) args[0];Enumeration enumeration =request.getParameterNames();while (enumeration.hasMoreElements()){String key = (String) enumeration.nextElement();String[] values = request.getParameterValues(key);System.out.println("========参数 "+key+"----------"+values[0]);}}System. out.println("=====================================" );}@After("me.uniauto.config.PointcutLog.inServiceLayer()")public void logInfoAfter(JoinPoint jp) {System. out.println("=====================================" );System. out.println("====" +jp.getSignature().getName()+"方法-结束!");System. out.println("=====================================" );}
}
这篇关于springMVC使用@AspectJ的demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!