Spring boot如何实现AOP处理请求
-
导AOP依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
-
添加Aspect
3.AOP代码(大家直接尝试即可)
@Aspect
@Component //引入到Spring容器
public class HttpAspect {
private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class); //logger日志打印
@Pointcut("execution(public * com.imooc.luckymoney.controller.*.*(..))") //定义切点
public void log(){
}
@Before("log()") //Before 方法执行前拦截
public void Before(JoinPoint joinPoint){
logger.info("Befoer拦截");
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//url
logger.info("url={}",request.getRequestURL());
//method
logger.info("method={}",request.getMethod());
//ip
logger.info("ip={}",request.getRemoteAddr());
//类方法
logger.info("class_method{}",joinPoint.getSignature().getDeclaringTypeName() + joinPoint.getSignature().getName());
//参数
logger.info("calss_agers={}",joinPoint.getArgs());
}
@After("log()") //方法执行后拦截
public void doAfter(){
logger.error("After拦截");
}
@AfterReturning(returning = "object",pointcut = "log()") //返回参数
public void doAfterReturning(Object object){
logger.info("response={}",object.toString());
}
}