目录
AOP基础
AOP: Aspect Object Programming(面向切面编程),其实就是面向特定方法编程
- 动态代理是面向切面编程最主流的实现。而SpringAOP 是Spring 框架的高级技术,旨在管理bean对象的过程中,主要通过底层的动态代理机制,对特性的方法进行编程
需求:统计service 层各个业务方法的执行时间
引入SpringBoot AOP依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
package com.chuangzhou.aop;
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;
@Component
@Slf4j
@Aspect
public class TimeAspact {
@Around("execution(* com.chuangzhou.serivce.impl.*.*(..))")
public Object recordTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
//1. 记录当前系统毫秒值
long start = System.currentTimeMillis();
//2.执行拦截方法
Object result = proceedingJoinPoint.proceed(); // result 为被执行方法的返回值
//3.记录当前系统毫秒值
long end = System.currentTimeMillis();
log.info(proceedingJoinPoint.getSignature() + "耗时:{}", end - start);
return result;
}
}
拦截到方法的耗时时间:

使用场景和优势:
