黑马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执行流程
相关推荐
0xDevNull1 小时前
Java反射机制深度解析:从原理到实战
java·开发语言·后端
华科易迅1 小时前
MybatisPlus增删改查操作
android·java·数据库
standovon2 小时前
Spring Boot整合Redisson的两种方式
java·spring boot·后端
IAUTOMOBILE2 小时前
Python 流程控制与函数定义:从调试现场到工程实践
java·前端·python
hutengyi2 小时前
PostgreSQL版本选择
java
皮皮林5512 小时前
重磅!JetBrains 正式发布全新的 AI 开发工具,定名 AI IDE AIR
java·intellij idea
MX_93593 小时前
SpringMVC请求参数
java·后端·spring·servlet·apache
ID_180079054733 小时前
小红书笔记评论 API,Python 调用示例与完整 JSON 返回参考
java·开发语言
lifewange3 小时前
java连接Mysql数据库
java·数据库·mysql
云原生指北3 小时前
命令行四件套:fd-rg-fzf-bat
java·大数据·elasticsearch