Spring Boot 学习之路 使用AOP请求处理对象 打印日志功能

1.配置pom.xml 使用 spring-boot-starter-aop

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

2.创建HttpAsp方法:实现打印日志跟踪

package com.imooc.student.aspect;

import org.aopalliance.intercept.Joinpoint;
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 HttpAsp {
    private static final Logger logger = LoggerFactory.getLogger(HttpAsp.class);

    @Pointcut("execution(public * com.imooc.student.controller.GirlContenter.*(..))")
    public void log(){

    }

    @Before("log()")
    public void doBefor(JoinPoint joinpoint){

        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        //url
        logger.info("url={}", request.getRequestURL());
       //method
        logger.info("methode={}", request.getMethod());
       //ip
        logger.info("ip={}", request.getRemoteAddr());
       //类方法
        logger.info("class_methode={}", joinpoint.getSignature().getDeclaringTypeName()+"."+joinpoint.getSignature().getName());
       //参数
        logger.info("args={}", joinpoint.getArgs());
    }
    @After("log()")
    public void doAfter(){
        logger.info("2222222222");
    }

    @AfterReturning(returning = "object",pointcut = "log()")
    public  void doAfterReturing(Object object){
        //返回参数信息
        logger.info("response={}", object);
    }
}

3.控制台打印输出:

2018-07-05 20:52:42.821  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : url=http://localhost:8080/girls/1
2018-07-05 20:52:42.821  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : methode=GET
2018-07-05 20:52:42.821  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : ip=0:0:0:0:0:0:0:1
2018-07-05 20:52:42.822  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : class_methode=com.imooc.student.controller.GirlContenter.girlFindOne
2018-07-05 20:52:42.822  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : args=1
Hibernate: select girl0_.id as id1_0_0_, girl0_.address as address2_0_0_, girl0_.age as age3_0_0_, girl0_.cup_size as cup_size4_0_0_ from girl girl0_ where girl0_.id=?
2018-07-05 20:52:42.860  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : 2222222222
2018-07-05 20:52:42.860  INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp         : response=Girl{id=1, cupSize='66', age=19, address='6'}

猜你喜欢

转载自blog.csdn.net/weixin_42595573/article/details/80932995