码迷,mamicode.com
首页 > 编程语言 > 详细

SpringCloud快捷创建注解切面

时间:2019-10-08 12:38:55      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:sys   注解   osc   sig   tde   public   https   servlet   ret   

首先需要明白,实现AOP的切面主要有以下几个要素:

 

使用@Aspect注解将一个java类定义为切面类

使用@Pointcut定义一个切入点,可以是一个规则表达式,比如下例中某个package下的所有函数,也可以是一个注解等。

根据需要在切入点不同位置的切入内容

使用@Before在切入点开始处切入内容

使用@After在切入点结尾处切入内容

使用@AfterReturning在切入点return内容之后切入内容(可以用来对处理返回值做一些加工处理)

使用@Around在切入点前后切入内容,并自己控制何时执行切入点自身的内容

使用@AfterThrowing用来处理当切入内容部分抛出异常之后的处理逻辑

 

@Aspect

@Component

@Order(1)//联想为包菜同心圆结构,order等级越小,先进入,第二次后执行

public class WebLogAspect {

    private Logger logger =  LoggerFactory.getLogger(this.getClass());

       /**

     * 定义一个切入点.

     * 解释下:

     *

     * ~ 第一个 * 代表任意修饰符及任意返回值.

     * ~ 第二个 * 任意包名

     * ~ 第三个 * 代表任意方法.

     * ~ 第四个 * 定义在web包或者子包

     * ~ 第五个 * 任意方法

     * ~ .. 匹配任意数量的参数.

     */

     @Pointcut("execution(public * com.kfit.*.web..*.*(..))")

     publicvoid webLog(){}

     

     @Before("webLog()")

     publicvoid doBefore(JoinPoint joinPoint){

        

       // 接收到请求,记录请求内容

        logger.info("WebLogAspect.doBefore()");

        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();

         HttpServletRequest request = attributes.getRequest();

               

      // 记录下请求内容

        logger.info("URL : " + request.getRequestURL().toString());

        logger.info("HTTP_METHOD : " + request.getMethod());

        logger.info("IP : " + request.getRemoteAddr());

        logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());

        logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs()));

       //获取所有参数方法一:

        Enumeration<String> enu=request.getParameterNames(); 

        while(enu.hasMoreElements()){ 

            String paraName=(String)enu.nextElement(); 

            System.out.println(paraName+": "+request.getParameter(paraName)); 

        } 

     }

     

     @AfterReturning("webLog()")

     publicvoid  doAfterReturning(JoinPoint joinPoint){

       // 处理完请求,返回内容

        logger.info("WebLogAspect.doAfterReturning()");

     }

}

SpringCloud快捷创建注解切面

标签:sys   注解   osc   sig   tde   public   https   servlet   ret   

原文地址:https://www.cnblogs.com/liveinpresent/p/11634469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!