黑马JAVAWeb - SpringAOP

1.什么是AOP?

  • 手动添加代码,每一个代码都要手动添加,代码非常的冗杂
  • AOP基础
  • 主要作用
  • AOP快速入门
java 复制代码
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):切面中具体要执行的代码(即横切逻辑),并指定执行时机。常见通知类型:
  1. Before:目标方法执行前执行
  2. After:目标方法执行后执行(无论是否异常)
  3. AfterReturning:目标方法正常返回后执行
  4. AfterThrowing:目标方法抛出异常后执行
  5. Around:包裹目标方法,可在执行前后自定义逻辑(最灵活)
  • AOP核心概念
  • AOP执行流程
相关推荐
怒放吧德德9 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆11 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌13 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊15 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang15 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang16 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解16 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing20 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean21 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven971 天前
剑指offer-79、最⻓不含重复字符的⼦字符串
java