springboot 控制层 aop 日志

引入pom

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

aop配置

package com.my.test.aop;

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
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.Objects;

@Aspect
// 申明是个spring管理的bean
@Component
@Slf4j
public class LogAspect {
   

    /**
     * 定义切面
     */
    @Pointcut("execution(public * com.my.test.controller.*.*(..))")
    public void logPointcut() {
   
    }

    @Around("logPointcut()")
    public Object handleAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
   

        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();

        long start = System.currentTimeMillis();
        //获取当前请求对象,记录请求信息
        Object[] args = proceedingJoinPoint.getArgs();
        log.info("[{}] {} ,入参: {} " ,request.getMethod(),request.getRequestURL().toString(), JSONUtil.toJsonStr(args));
        Object result = proceedingJoinPoint.proceed();
        log.info("返回: {} , 总消耗时: {} ms",Objects.isNull(result) ? "无返回" : JSONUtil.toJsonStr(result),System.currentTimeMillis() - start);
        return result;
    }
    
}



相关推荐

  1. springboot 控制 aop

    2024-02-22 07:40:04       50 阅读
  2. springboot+日志系统

    2024-02-22 07:40:04       41 阅读
  3. springboot+vue配置

    2024-02-22 07:40:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-22 07:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-22 07:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-22 07:40:04       82 阅读
  4. Python语言-面向对象

    2024-02-22 07:40:04       91 阅读

热门阅读

  1. 深度学习????????

    2024-02-22 07:40:04       53 阅读
  2. BeautifulSoup的使用与入门

    2024-02-22 07:40:04       50 阅读
  3. 计算机科学背后的故事和挑战

    2024-02-22 07:40:04       57 阅读
  4. 设计模式-策略模式

    2024-02-22 07:40:04       50 阅读
  5. 高级统计方法 第1次作业

    2024-02-22 07:40:04       52 阅读
  6. nginx的配置文件详解

    2024-02-22 07:40:04       43 阅读
  7. day38打卡

    2024-02-22 07:40:04       53 阅读
  8. 云计算的两地三中心和灾备介绍

    2024-02-22 07:40:04       53 阅读