随笔 - 19  文章 - 0  评论 - 0  阅读 - 3559

AOP(概述)

AOP (Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构
OOP (Object Oriented Programming)面向对象编程
作用:在不影响原始设计的基础上为其进行功能增强
Spring理念:无入侵式/无侵入式

连接点(JoinPoint):程序执行过程中的任意位置,粒度为执行方法等,在spring中理解为方法的执行
切入点(Pointcut):匹配连接点的式子,在SpringAOP中,切入点可以描述一个具体方法,也可以匹配多个方法
通知(Advice):在切入点执行的操作,也就是共性功能
切面(Aspect):描述通知与切入点的对应关系

简单案例

AOP工作流程

Spring容器启动 -> 读取所有切面配置(AOP类)中的切入点 -> 初始化bean,匹配失败,创建原始对象(目标对象);匹配成功,创建代理对象

AOP切入点表达式
切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类名.接口名/方法名(参数)异常名)
execution(public User com.itheima.service.UserService.findById(int))

*:单个独立的任意字符
..:多个连续的任意字符
+:匹配子类类型

注意事项

  • 包名书写尽量不使用..匹配,效率过低,常用*做单个包描述匹配,或精准匹配
  • 接口名/类名书写名称与模块相关的采用*匹配,例如UserService书写成*Service,绑定业务层接口名
  • 方法名书写以动词进行精准匹配,名词采用*匹配,例如getById书写成getBy*,selectAll书写成selectAll

AOP通知
前置通知 @Before("切入点方法名")
后置通知 @After("切入点方法名")
环绕通知 @Around("切入点方法名")
返回后通知 @AfterReturning("切入点方法名")
抛出异常后通知 @AfterThrowing("切入点方法名")

AOP通知获取数据
获取切入点方法的参数 JoinPoint:适用于前置、后置、返回后、抛出异常后通知 ProceedJointPoint:适用于环绕通知
获取切入点方法返回值 返回后通知 环绕通知
获取切入点方法运行异常信息 抛出异常后通知 环绕通知



参考文章
https://www.cnblogs.com/jap6/p/10637429.html springAOP中用joinpoint获取切入点方法的参数
https://blog.csdn.net/q982151756/article/details/80513340 细说Spring——AOP详解(AOP概览)

posted on   云往前面飘  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示