码迷,mamicode.com
首页 > 其他好文 > 详细

sptringboot2.0实现aop

时间:2018-11-30 00:34:03      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:info   div   logger   add   注解   color   remote   depend   ble   

题记:在项目需要对请求日志情形管理。

声明:参考博客https://blog.csdn.net/bombsklk/article/details/79143145

1、在pom.xml中加入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2、写一个aop切面类,采用注解方式

package com.cn.commodity.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.logging.Logger;

    @Aspect
    @Component
    public class WebLogAspect {

        private Logger logger = Logger.getLogger("WebLogAspect");

        @Pointcut("execution(public * com.cn.commodity..*.*(..))")
        public void webLog(){}

        @Before("webLog()")
        public void doBefore(JoinPoint joinPoint) throws Throwable {
            // 接收到请求,记录请求内容
            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()));
        }

        @AfterReturning(returning = "ret", pointcut = "webLog()")
        public void doAfterReturning(Object ret) throws Throwable {
            // 处理完请求,返回内容
            logger.info("RESPONSE : " + ret);
        }

    }

这样就实现了aop切面。很简单吧,想要深入了解,可以进springboot官网学习。

sptringboot2.0实现aop

标签:info   div   logger   add   注解   color   remote   depend   ble   

原文地址:https://www.cnblogs.com/ywjfx/p/10041745.html

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