黑马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执行流程
相关推荐
ZHE|张恒18 小时前
Spring Bean 生命周期
java·spring
q***385120 小时前
SpringCloud实战十三:Gateway之 Spring Cloud Gateway 动态路由
java·spring cloud·gateway
小白学大数据20 小时前
Python爬虫伪装策略:如何模拟浏览器正常访问JSP站点
java·开发语言·爬虫·python
程序员西西21 小时前
SpringBoot接口安全:APIKey保护指南
java·spring boot·计算机·程序员·编程·编程开发
summer_west_fish21 小时前
单体VS微服务:架构选择实战指南
java·微服务·架构
v***85721 小时前
Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
java·ubuntu·centos
烤麻辣烫21 小时前
黑马程序员大事件后端概览(表现效果升级版)
java·开发语言·学习·spring·intellij-idea
q***965821 小时前
Spring总结(上)
java·spring·rpc
思密吗喽21 小时前
宠物商城系统
java·开发语言·vue·毕业设计·springboot·课程设计·宠物
ss2731 天前
019:深入解析可重入互斥锁:原理、实现与线程安全实践
java·数据库·redis