一、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();
System.currentTimeMillis();
log.info( + (end - start) + );
result;
}
}












