黑马JAVAWeb - SpringAOP
1.什么是AOP?

- 手动添加代码,每一个代码都要手动添加,代码非常的冗杂

- AOP基础

- 主要作用

- AOP快速入门

package com.itheima.aop;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;@Aspect // 表示当前类为切面类
@Component // 表示当前类为Spring Bean
@Slf4j // 创建日志对象
public class RecordTimeAspect {// 切点表达式@Around("execution(* com.itheima.service.*.*(..))")public Object recordTime(ProceedingJoinPoint pjp) throws Throwable {long beginTime = System.currentTimeMillis();log.info("开始执行 {}", pjp.getSignature().getName()); // 获取目标方法名称// 执行目标方法Object result = pjp.proceed();long endTime = System.currentTimeMillis();log.info("执行耗时:{} ms", endTime - beginTime);return result;}
}
- 通知(Advice):切面中具体要执行的代码(即横切逻辑),并指定执行时机。常见通知类型:
- Before:目标方法执行前执行
- After:目标方法执行后执行(无论是否异常)
- AfterReturning:目标方法正常返回后执行
- AfterThrowing:目标方法抛出异常后执行
- Around:包裹目标方法,可在执行前后自定义逻辑(最灵活)

- AOP核心概念

- AOP执行流程

