第12讲. SpringBoot AOP切面

切面, 方法的执行前后,切入代码,

1,新建一个 aspect包,新建RequestAspect类,添加注解,写方法,

对Controller层的public 的任一类返回值的任一类的任意方法的任意参数。

    获取logger,

    定义切点,

    定义方法前执行...(获取访问ip,获取访问路径,获取访问方式,

                    获取包名,类名,方法名,参数列表)

    定义方法后执行...

    定义返回值...

package com.cruise.aspect;

import javax.servlet.http.HttpServletRequest;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.jboss.logging.Logger;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.cruise.entity.Student;

@Aspect
@Component
public class RequestAspect {

    private Logger logger = Logger.getLogger(RequestAspect.class);
    
    @Pointcut("execution(public * com.cruise.controller.*.*(..))")
    public void log(){
        
    }
    
    @Before("log()")
    public void doBefore(JoinPoint jointPoint){
        logger.info("方法执行前...");
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        logger.infof(request.getRemoteHost());
        logger.infof( request.getRequestURI());
        logger.infof(request.getMethod());

        logger.infof(jointPoint.getSignature().getDeclaringTypeName()+"."+

                    jointPoint.getSignature().getName());

        System.out.println(((Student)jointPoint.getArgs()[0]));
    }
    @After("log()")
    public void doAfter(JoinPoint jointPoint){
        logger.info("方法执行后...");
    }
    @AfterReturning(returning="object",pointcut="log()")
    public void doAfterReturning(Object object){
        logger.info("方法的返回值:"+object);
    }
    
}
 

2,在Student实体中,加入toString方法,

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

3,查看日eclipse日志测试,

猜你喜欢

转载自blog.csdn.net/u010393325/article/details/83957935