Spring AOP 核心概念与实战解析
什么是 Spring AOP?
AOP(面向切面编程)是一种对一类问题集中处理的编程思想。比如拦截器、统一返回结果管理、统一异常处理、登录校验等场景,如果使用传统的 OOP(面向对象编程),会导致相同的代码重复多次出现,业务方法中混杂着非核心的逻辑。
Spring AOP 就是为了解决这些问题而存在的,它是 AOP 思想的一种具体实现方式。
快速上手:统计方法耗时
我们先通过一个实际例子来理解 Spring AOP 的用法:计算所有方法的运行时长。
1. 引入依赖
在 pom.xml 文件中添加 AOP 依赖。注意当前 Spring Boot 主流版本通常配合使用。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2. 编写切面类
创建一个 Aspect 类,利用 @Around 注解包裹目标方法,记录执行前后的时间差。
package com.example.springbookdemo.aspect;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Slf4j
@Aspect
@Component
public class TimeRecordAspect {
@Around("execution(* com.example.springbookdemo.controller.*.*(..))")
public Object timeRecord(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis(); // 记录开始时间
joinPoint.proceed();
System.currentTimeMillis();
log.info(, joinPoint.getSignature(), (end - start));
proceed;
}
}

