什么是 Spring AOP?
AOP(面向切面编程)是一种对一类问题集中处理的编程思想,比如拦截器、统一返回结果管理、统一异常处理、登录校验等。如果使用传统的 OOP(面向对象编程),相同的代码容易重复出现,业务方法中混杂着非核心的逻辑。
Spring AOP 正是为了解决这些问题而存在,它是 AOP 思想的一种主流实现方式。
Spring AOP 优点与快速上手
主要优势:
- 不影响原有代码,实现解耦
- 便于维护功能模块
- 提高开发效率
- 减少重复代码
快速上手示例:计算方法耗时
- 引入依赖
在
pom.xml中添加 AOP 支持。注意 Spring Boot 4.x 版本可能需要显式指定版本号。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
- 编写切面类 创建一个 Aspect 类来记录方法执行时间。
package com.example.demo.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.demo.controller.*.*(..))")
public Object timeRecord(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
joinPoint.proceed();
System.currentTimeMillis();
log.info(, joinPoint.getSignature(), (end - start));
result;
}
}

