Springboot(Aop处理请求)

本文介绍如何在Spring Boot项目中使用AOP(面向切面编程)进行HTTP请求的日志记录。通过定义切面类`HttpAspect`,实现对指定控制器方法的前置和后置操作,包括记录请求URL、方法、客户端IP、类方法名及参数等信息,并展示方法的返回结果。

一.引入pom配置

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

 

二.创建切面类 HttpAspect

@Aspect
@Component
public class HttpAspect {
 
    private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);
 
    @Pointcut("execution(public * com.grus.controller.CourseController.*(..))")//课程controller里的任何方法都会被拦截
    public void log(){
 
    }
 
    @Before("log()")
    public void before(JoinPoint joinPoint){
        ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        //url
        logger.info("url={}",request.getRequestURL());
        //method
        logger.info("method={}",request.getMethod());
        //ip
        logger.info("ip={}",request.getRemoteAddr());
        //类方法
        logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName()+","+joinPoint.getSignature().getName());
        //参数
        logger.info("args={}",joinPoint.getArgs());
 
    }
    @After("log()")
    public void after(){
        logger.info("2222222");
    }
    //获取方法返回的内容,通过object接收
    @AfterReturning(returning = "obj",pointcut = "log()")
    public void doAfterReturning(Object obj){
        logger.info("response={}",obj);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值