zoukankan      html  css  js  c++  java
  • springboot aop示例

    package com.melon.aop;
    
    import com.melon.utils.GSON;
    import lombok.extern.log4j.Log4j;
    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 javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    /**
     * Created by zhiqi.shao on 2017/5/19.
     */
    @Log4j
    @Aspect
    @Component
    public class WebLogAspect {
    
        ThreadLocal<Long> startTime = new ThreadLocal<>();
    
        @Pointcut("execution(public * com.melon.web..*.*(..))")
        public void webLog(){}
    
        @Before("webLog()")
        public void doBefore(JoinPoint joinPoint) throws Throwable {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            log.info("*****request url:" + request.getRequestURL());
    
            StringBuilder sb = new StringBuilder();
            Object[] os = joinPoint.getArgs();
            for (Object o : os) {
                if (o instanceof HttpSession ||o instanceof HttpServletResponse || o instanceof HttpServletRequest|| o instanceof  Exception) {
                    continue;
                }
                sb.append(GSON.toJson(o) + ":");
            }
            log.info("*****request parameters:" + sb.toString());
    
            startTime.set(System.currentTimeMillis());
    
            // 省略日志记录内容
        }
    
        @AfterReturning(returning = "ret", pointcut = "webLog()")
        public void doAfterReturning(Object ret) throws Throwable {
            // 处理完请求,返回内容
            log.info("*****response contents : " + GSON.toJson(ret));
            log.info("*****response time : " + (System.currentTimeMillis() - startTime.get()) + "ms");
        }
    
    
    }
    

      

  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/8846878.html
Copyright © 2011-2022 走看看