springboot日志切面通用类实例详解

 更新时间:2021年01月08日 08:31:42   作者:jiachengren  
这篇文章主要介绍了springboot日志切面通用类,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.pom.xml文件导入AOP依赖

<!--aop依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-aop</artifactId>
  <version>2.3.0.RELEASE</version>
</dependency>

2.pom.xml导入Lombok依赖

<!--Lombok依赖-->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>
package jmu.rjc.aspect;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;

//日志切面
@Aspect
@Component
public class LogAspect {

  private final Logger logger = LoggerFactory.getLogger(this.getClass());
	
	//包名配置为自己的项目包名即可
  @Pointcut("execution(* jmu.rjc.web.*.*(..))")
  public void log(){}

  @Before("log()")
  public void doBefore(JoinPoint joinPoint){
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();
    String url = request.getRequestURL().toString();
    String ip = request.getRemoteAddr();
    String classMethod = joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName();
    Object[] args = joinPoint.getArgs();
    RequestLog requestLog = new RequestLog(url,ip,classMethod,args);
    logger.info("Request : {}",requestLog);
  }

  @After("log()")
  public void doAfter(){
    logger.info("---------doAfter-------");
  }

  @AfterReturning(returning = "result",pointcut = "log()")
  public void doAfterReturn(Object result){
    logger.info("Result : {}"+result);
  }

  @Data
  @ToString
  @AllArgsConstructor
  @NoArgsConstructor
  private class RequestLog{
    private String url;
    private String ip;
    private String classMethod;
    private Object[] args;
  }

}

3.关于Lombok的注意点

Lombok的使用大大简化了开发过程,提高了开发效率,但是也存在一些隐患.比如强行侵入jar包,JDK版本升级冲突,破坏部分封装性等缺陷,使用前最好和团队商量好

到此这篇关于springboot日志切面通用类的文章就介绍到这了,更多相关springboot日志切面通用类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现多个wav文件合成一个的方法示例

    Java实现多个wav文件合成一个的方法示例

    这篇文章主要介绍了Java实现多个wav文件合成一个的方法,涉及java文件流读写、编码转换、解析等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • Spring容器-BeanFactory和ApplicationContext使用详解

    Spring容器-BeanFactory和ApplicationContext使用详解

    这篇文章主要为大家介绍了Spring容器-BeanFactory和ApplicationContext的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 关于Feign的覆写默认配置和Feign的日志

    关于Feign的覆写默认配置和Feign的日志

    这篇文章主要介绍了关于Feign的覆写默认配置和Feign的日志方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java中Calendar与Date类型互相转换的方法

    java中Calendar与Date类型互相转换的方法

    这篇文章主要介绍了java中Calendar与Date类型互相转换的方法,Calendar与Date类型是我们日常开发中常用的两种数据类型,它们用于不同的场景,两者具有不同的方法,接下来通过实例给大家详解,需要的朋友可以参考下
    2022-09-09
  • SpringBoot http请求注解@RestController原理解析

    SpringBoot http请求注解@RestController原理解析

    这篇文章主要介绍了SpringBoot http请求注解@RestController原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 详解Java如何优雅地书写if-else

    详解Java如何优雅地书写if-else

    在日常开发中我们常常遇到有多个if else的情况,之间书写显得代码冗余难看,对于追求更高质量代码的同学,就会思考如何优雅地处理这种代码。本文我们就来探讨下几种优化if else的方法
    2022-08-08
  • java ArrayList按照同一属性进行分组

    java ArrayList按照同一属性进行分组

    这篇文章主要介绍了java ArrayList按照同一属性进行分组的相关资料,需要的朋友可以参考下
    2017-02-02
  • mybatis plus实体类中字段映射mysql中的json格式方式

    mybatis plus实体类中字段映射mysql中的json格式方式

    这篇文章主要介绍了mybatis plus实体类中字段映射mysql中的json格式方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 一文讲解如何优雅的调试jar包

    一文讲解如何优雅的调试jar包

    在现实开发过程中,现场环境永远比开发环境复杂,下面这篇文章主要给大家介绍了关于如何优雅的调试jar包的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • eclipse/IDEA配置javafx项目步骤(图文教程)

    eclipse/IDEA配置javafx项目步骤(图文教程)

    这篇文章主要介绍了eclipse/IDEA配置javafx项目步骤(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论