一:通过SpringBoot 实现拦截器Interceptor 分为两步
- pom.xml 配置引用 spring-boot-starter-aop
- ControllerInterceptor 实现
二:示例
1.pom.xml 配置
<!-- 加入aop 组件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.Interceptor 实现
- @Aspect
- @Pointcut
- @Around
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* 拦截器:拦截所有Controller,处理非正常访问 request
* @author andy
*
*/
@Component
@Aspect
@Slf4j
public class ControllerInterceptor {
@Pointcut("execution(* cn.com.andy.controller.*.*(..))")
public void entranceAspect() {
}
@Around("entranceAspect()")
public Object handleController(ProceedingJoinPoint proPoint) throws Throwable {
/**
* 获取请求类,方法,参数
*/
String className = proPoint.getSignature().getDeclaringTypeName();
String methodName = proPoint.getSignature().getName();
String strParma = Arrays.toString(proPoint.getArgs());
System.out.println(strParma);
Object obj = proPoint.proceed();
return obj;
}
}