【spring(三)】AOP总结

🌈键盘敲烂,年薪30万🌈

目录

一、AOP相关概念

[① AOP核心思想思想:](#① AOP核心思想思想:)

[② AOP专业术语:](#② AOP专业术语:)

二、AOP快速如入门

三、AOP工作流程

四、切入点表达式

[① 语法格式](#① 语法格式)

②支持通配符

③书写技巧

五、通知类型

①⭐环绕通知⭐

六、获取切入点参数


一、AOP相关概念

① AOP核心思想思想:

  • 无侵入式的功能增强

② AOP专业术语:

  • 连接点:原始方法
  • 切入点表达式:匹配连接点的式子(要追加功能的方法)
  • 通知:追加的功能
  • 切面:绑定通知和切入点

二、AOP快速如入门

AOP入门案例(基于注解 )

分析:

1.导入依赖坐标

2.制作连接点(数据层的方法)

3.定义切入点表达式

4.绑定切入点与通知关系(切面)

定义通知类:

java 复制代码
@Component
@Aspect
public class MyAdvice {
    // 定义切入点表达式
    @Pointcut("execution(void itpan.dao.impl.BookDaoImpl.update())")
    public void pt(){}

    // 定义通知和绑定关系
    @Before("pt()")
    public void method(){
        System.out.println(System.currentTimeMillis());
    }

}

加入支持AOP的注解

java 复制代码
@Configuration
@ComponentScan("itpan")
@EnableAspectJAutoProxy // 告诉spring 程序有基于注解开发的AOP
public class SpringConfig {
}

三、AOP工作流程

四、切入点表达式

① 语法格式

  • 标准格式:动作关键字(访问修饰符 返回值 包名.类名或接口名.方法名(参数) 异常名)
  • 例如:execution(public User com.itpan.service.BookService.findById(int))

②支持通配符

.. 任意

* 任意一个

③书写技巧

  • 权限修饰符一般为public 可省略 private不要省略
  • 包名书写尽量不要使用.. 常用*或精准匹配
  • 接口名/类名等通用名称使用*匹配 例如UserService 使用*Service
  • 方法名动词精准匹配,名词*匹配 例如getById 使用getBy*

五、通知类型

①⭐环绕通知⭐

注意:

返回值类型为Object

补充:

前置通知 @Before

后置通知 @After

运行成功后通知 @AfterReturning

抛出异常后通知 @AfterThrowing

六、获取切入点参数

环绕通知:ProceedingJoinPoing中getArgs()

其他通知:JoinPoint中getArgs()方法

注意:ProceedingJoinPoing与JoinPoint必须式方法中的第一个参数

相关推荐
格子软件6 分钟前
2026年GEO贴牌代理:分布式多级分账状态机源码深度解构
java·vue.js·分布式·vue·geo
我是一颗柠檬1 小时前
【Java项目技术亮点】加权轮询负载均衡算法
java·算法·负载均衡
灯厂码农1 小时前
C语言动态内存分配完全指南(malloc、calloc、realloc、free)
java·c语言·算法
geovindu1 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
无心水2 小时前
【全域智能营销实战】2、Spring AI 模块化架构深度解读:从 1.0 到 2.0 的演进与最佳实践
人工智能·spring·架构·harness·顶尖架构师·全域智能营销·harmess
梦梦代码精2 小时前
电商系统不是技术堆叠:LikeShop如何用分层Hold住复杂业务?
java·docker·代码规范
负责的蛋挞2 小时前
异步HttpModule的实现方式
java·服务器·前端
AC赳赳老秦2 小时前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw
Tian_Hang3 小时前
Eclipse Ditto 物模型相关代码
java·运维·服务器·ide·eureka·eclipse
卷无止境3 小时前
C++ 存储类说明符(Storage Class Specifier)大横评
c++·后端