spring boot 使用AOP处理请求的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36361038/article/details/80724023

1、要使用AOP就需要添加相关包

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

2、直接创建一个类使用情况如下

package com.xb.aspect;

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.ServletRequest;
import javax.servlet.http.HttpServletRequest;

/**
 * Created by XueBiao on 2018/6/18.
 */
@Aspect //作用是把当前类标识为一个切面供容器读取
@Component //把这个引入spring中
public class HttpAspect {
    private  final  static Logger loggoer= LoggerFactory.getLogger(HttpAspect.class);
    @Pointcut("execution(public  * com.xb.controller.GirlController.*(..))")
    public  void  log(){}
    //..表示不管这个方法里面的任何参数都会
    //被拦截
    @Before("log()")
    public  void  bef(JoinPoint joinPoint){
//    System.out.println("方法执行之前");
        ServletRequestAttributes attributes=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request=attributes.getRequest();
        loggoer.info("url={}",request.getRequestURI());
        loggoer.info("method={}" ,request.getMethod());
        loggoer.info("IP={}",request.getRemoteAddr());
        //获取类方法
        loggoer.info("类方法={}",joinPoint.getSignature().getDeclaringTypeName()+"."
                +joinPoint.getSignature().getName());
        //获取类参数
        loggoer.info("参数={}",joinPoint.getArgs());
        loggoer.info("方法执行之前");
    }
    @After("log()")
    public void excpt(){
//        System.out.println("方法执行完之后");
        loggoer.info("方法执行完之后");
    }
    //输出响应回来的信息
    @AfterReturning(returning = "object" ,pointcut = "log()")
    public  void  doAfterReturning(Object object){
        loggoer.info("response={}",object.toString());
    }

}
注意这是对执行Controller类里面的方法的基本控制,相当于拦截器一样,需要满足什么情况下才能让这哥方法之行。

猜你喜欢

转载自blog.csdn.net/qq_36361038/article/details/80724023