一、AOP 与 Spring AOP
AOP:Aspect Oriented Programming(面向方面编程)。是一种对某一类事情集中处理的思想。
Spring AOP:就是对 AOP 思想的一种实现。
二、Spring AOP 简单实现
我们简单实现一个统计每个接口的用时。
引入依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>
写 AOP 实现:
- 类使用注解@Aspect 修饰
- 方法参数为 ProceedingJoinPoint 类,代表要实现的方法(只能在 Around 通知下写)
- 方法使用注解@Around,参数是对应的路径的切点
- ProceedingJoinPoint 的参数执行 proceed 方法。
package com.example.library.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;
@Aspect
@Component
@Slf4j
public class TimeAspect {
@Around("execution(* com.example.library.controller.*.*(..) )")
public Object recordTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
// 开始时间
long start = System.currentTimeMillis();
// 执行方法
Object result = proceedingJoinPoint.proceed();
// 结束时间
long end = System.currentTimeMillis();
log.info("执行时间:" + (end - start) + "ms");
result;
}
}












