博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot 使用AOP处理请求
阅读量:2493 次
发布时间:2019-05-11

本文共 1859 字,大约阅读时间需要 6 分钟。

面向切面编程AOP是一种编程范式,与语言无关,是一种程序设计思想

使用AOP统一处理请求日志

1、增加maven配置

org.springframework.boot
spring-boot-starter-aop

2、新增类

package cn.edu.shu.ces_chenjie.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.http.HttpServletRequest;@Aspect@Componentpublic class HttpAspect {    private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class);    //新增一个切点    @Pointcut("execution(public * cn.edu.shu.ces_chenjie.controller.PersonController.*(..))")    public void log(){    }    //在切点执行以前    @Before("log()")    public void before(JoinPoint joinPoint){        logger.info("-------------------------所有请求结束之前进行拦截-------------------------------------");        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();        HttpServletRequest request = attributes.getRequest();        logger.info("url={}",request.getRequestURL());        logger.info("method={}",request.getMethod());        logger.info("ip={}",request.getRemoteAddr());        logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName() + "." +                joinPoint.getSignature().getName()        );        logger.info("args={}",joinPoint.getArgs());    }    //在切点执行以后    @After("log()")    public void after(){        logger.info("-------------------------所有请求结束之后进行拦截-------------------------------------");    }    //在切点返回以后    @AfterReturning(pointcut = "log()",returning = "object")    public void afterReturning(Object object){        logger.info("response={}",object);    }}
3、运行

你可能感兴趣的文章
虚拟IP技术
查看>>
UIScrollView实现不全屏分页的小技巧
查看>>
spark 2.4安装
查看>>
Embeded linux之移植boa
查看>>
C之变量初始化的重要性
查看>>
jQuery 学习笔记(jQuery: The Return Flight)
查看>>
Java中常用的测试工具JUnit
查看>>
PHP图形图像的典型应用 --常用图像的应用(验证码)
查看>>
Robot Framework-Ride界面介绍及库的添加
查看>>
IntelliJ IDEA 连接数据库 详细过程
查看>>
redis完全攻略
查看>>
D3---01基础的柱状图制作(转)
查看>>
Time-Varying Mesh Compression
查看>>
SocketServer源码学习(二)
查看>>
编写DLL所学所思(1)——导出函数
查看>>
POJ3006-Dirichlet's Theorem on Arithmetic Progressions
查看>>
QT分页控件,开源,供大家使用
查看>>
005.LVM删除
查看>>
Hibernate 简介(百度)
查看>>
深入理解 KVC\KVO 实现机制 — KVC
查看>>