弹簧引导拦截器如何使用spring AOP实现

  介绍

本篇文章为大家展示了弹簧引导拦截器如何使用spring AOP实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在春天引导中,简单几步,使用spring AOP实现一个拦截器:

1,引入依赖:

& lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-aop   & lt;/dependency>

2,创建拦截器类(在该类中,定义了拦截规则:拦截com.xjj.web。控制器包下面的所有类中,有@RequestMapping注解的方法。):

/* *   *拦截器:记录用户操作日志,检查用户是否登录……   * @author XuJijun   */@Aspect   @ component   公开课ControllerInterceptor {   私有静态最终日志记录器=LoggerFactory.getLogger (ControllerInterceptor.class);      @ value (“$ {spring.profiles}“)   私人字符串env;/* *   *定义拦截规则:拦截com.xjj.web.controller包下面的所有类中,有@RequestMapping注解的方法。   */@Pointcut(“执行(* com.xjj.web.controller . . *(. .))和@annotation (org.springframework.web.bind.annotation.RequestMapping)“)   公共空间controllerMethodPointcut () {}/* *   *拦截器具体实现   * @param pjp   * @return JsonResult(被拦截方法的执行结果,或需要登录的错误提示)。   */@Around (“controllerMethodPointcut()“)//指定拦截器规则;也可以直接把“执行(* com.xjj .........)”写进这里   公共对象拦截器(ProceedingJoinPoint pjp) {   长beginTime=System.currentTimeMillis ();   MethodSignature签名=(MethodSignature) pjp.getSignature ();   方法方法=signature.getMethod ();//获取被拦截的方法   字符串methodName=method.getName ();//获取被拦截的方法名      Set,allParams=new LinkedHashSet<的在();//保存所有请求参数,用于输出到日志中      logger.info(“请求开始,方法:{}“,methodName);      对象的结果=零;      对象[]参数=pjp.getArgs ();   (对象参数:args) {//logger.debug(“参数:{}“,arg);   如果(arg instanceof Map<及# 63;,,# 63;祝辞){//提取方法中地图的参数,用于记录进日志中   @SuppressWarnings (“unchecked")   Object> Map<字符串;地图=(Map<字符串,Object>)参数;      allParams.add(地图);   }else if (arg instanceof HttpServletRequest) {   HttpServletRequest请求=(HttpServletRequest)参数;   如果(isLoginRequired(方法)){   如果(! isLogin(请求)){   结果=new JsonResult (ResultCode。NOT_LOGIN,“该操作需要登录!去登录吗? \ n \ n(不知道登录账号?请联系老许。)“,null);   }   }//获取查询字符串或发布表单数据参数   Map

3,测试

浏览器中输入:http://localhost: 8082/api/admin/登录

测试结果:

 2016-07-26 11:58:12,057:信息http - nio - 8082 - exec - 1 (ControllerInterceptor.java: 58) -请求开始,方法:登录
  2016-07-26 11:58:12,061:信息http - nio - 8082 - exec - 1 (ControllerInterceptor.java: 103)登录请求结束,耗时:女士8 

弹簧引导拦截器如何使用spring AOP实现

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5