版权声明:本文为博主原创文章,未经博主允许不得转载。 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类里面的方法的基本控制,相当于拦截器一样,需要满足什么情况下才能让这哥方法之行。