springboot 实现 aop

本文详细介绍了如何在SpringBoot项目中使用AOP进行日志记录。通过在pom.xml中添加spring-boot-starter-aop依赖,创建aspect并定义切点,实现对指定类方法的前置和后置增强处理,包括获取请求、响应、会话信息及方法参数和返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. pom.xml 导入 springboot aop 依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  1. 创建 aspect,在 execution 参数中写上被切的类
@Aspect
@Component
public class IndexAspect {
    private static final Logger logger = LoggerFactory.getLogger(IndexAspect.class);

    // 公用的切点,该类下所有方法
    @Pointcut("execution(public * com.example.IndexController.*(..))")
    public void log() {
        logger.info("调用 log() ");
    }

    // 使用log函数定义的 execution,不执行log()方法
    @Before("log()")
    public void doBefore(JoinPoint joinPoint) {
        logger.info("调用 doBefore");
        ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        logger.info("获取 request");
        HttpServletRequest request = attributes.getRequest();
        logger.info("获取 reponse");
        attributes.getResponse();
        logger.info("获取 session");
        attributes.getRequest().getSession();
        logger.info("获取 class:" + joinPoint.getSignature().getDeclaringTypeName().toString());
        logger.info("获取 args:" + joinPoint.getArgs());
    }

    // 获取返回值
    @AfterReturning(pointcut = "log()", returning = "object")
    public void doAfterReturning(Object object) {
        logger.info("获取返回值" + object.toString());
    }
}
  1. 启动项目,查看控制台日志
com.example.IndexAspect: 调用 doBefore
com.example.IndexAspect: 获取 request
com.example.IndexAspect: 获取 reponse
com.example.IndexAspect: 获取 session
com.example.IndexAspect: 获取 class:com.example.thymeleaf.IndexController
com.example.IndexAspect: 获取 args:
com.example.IndexAspect: index

参考:http://www.fengyunxiao.cn

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值