Spring Boot 整合 AOP 实现接口切面日志

本文介绍了如何在SpringBoot项目中使用AOP(面向切面编程)来实现接口级别的日志记录,包括AOP的基本概念、术语、切面和通知的使用,以及通过ApiLog注解和ApiLogAspect切面实现在特定接口调用前后添加日志的功能。

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

Spring Boot 整合 AOP 实现接口切面日志

什么是 AOP?

AOP(Aspect-Oriented Programming)是一种编程范式,它允许开发人员将横切关注点(如日志记录、性能统计、安全性等)从主要业务逻辑中分离出来,以便更好地模块化和管理这些关注点。

AOP通过定义切面(Aspect)来实现这一目标,切面包含了通知(Advice)和切点(Pointcut),通知定义了在何时、何地执行横切逻辑,而切点定义了在何处执行横切逻辑。通过将切面与应用程序的其他部分进行连接,AOP可以实现横切关注点的统一管理和重用。

AOP通常用于解决跨越多个模块的横切关注点,例如日志记录、事务管理、安全性等。

在这里插入图片描述

我们可以简单的把 AOP 理解为贯穿于方法之中,在方法执行前、执行时、执行后、返回值后、异常后要执行的操作。

AOP相关术语

切面(Aspect): 对横切关注点进行封装的类,每个关注点体现为一个通知方法;通常使用 @Aspect 注解来定义切面。

通知(Advice): 切面必须要完成的各个具体工作,比如我们的日志切面需要记录接口调用前后的时长,就需要在调用接口前后记录时间,再取差值。通知的方式有五种:

  • @Before:通知方法会在目标方法调用之前执行
  • @After:通知方法会在目标方法调用后执行
  • @AfterReturning:通知方法会在目标方法返回后执行
  • @AfterThrowing:通知方法会在目标方法抛出异常后执行
  • @Around:把整个目标方法包裹起来,在被调用前和调用之后分别执行通知方法

连接点(JoinPoint): 通知应用的时机,比如接口方法被调用时就是日志切面的连接点。

切点(Pointcut): 通知功能被应用的范围,比如本篇日志切面的应用范围是所有 controller 的接口。通常使用 @Pointcut 注解来定义切点表达式。

代码实现 AOP 记录接口访问日志

整合 POM 依赖

<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
</dependency>

定义 ApiLog 注解

@Target({
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值