当前位置: 首页 > news >正文

Spring中的AOP

Spring中的AOP

文章目录

  • Spring中的AOP
    • AOP概述
      • 相关术语
      • 总结
      • 作用

AOP概述

AOP(Aspect Programming) 是一种设计思想,是面向切面编程思想

跟OOP(面向对象编程)有什么关系呢?

AOP面向切面编程然后是OOP(面向对象编程)的补充和完善。

OOP是纵向继承机制

AOP是横向抽取机制

可以把分核心业务代码抽取出来

为什么叫切面编程呢?

那是我们把一些非核心业务代码抽取出来之后,我们要把它交个一个切面类来进行管理,不是把它抽取出来的,我们还有把它套到我们当前真正实现功能的位置。

AOP是干嘛的?

抽:我们要把非核心代码,封装到当前的切面类进行管理

套:把我们当前抽取出来的代码,套用到我们当前抽取出来的位置

我们就可以达到一个不修改源代码情况下给程序动态统一添加额外的功能

相关术语

①横切关注点

从每个方法中抽取出来同一类非核心业务,在同一个项目中,我们可以使用多个横切关注点对相关对方法进行多个不同的方面增强(就是从核心代码中抽取出来的非核心业务代码)

②通知

我们要把横切关注点收集到一个类中,或者说我们把横切关注点封装到一个类中,这个类就叫切面,而这个切面里面所封装的每一个横切关注点他都是一个通知(你的非核心业务代码它在我们的目标对象中叫横切关注点,你把它抽出来之后放在一个切面类来进行封装,那我的横切关注点在切面中他就表示为一个通知方法,)

横切关注点:横切关注点是对于我们的目标对象的非核心业务代码来说的

通知:通知是针对于,我要把横切关注点封装在我们的切面中,而在这个切面中每一个横切关注点他都表示为一个通知方法

切面:封装横切关注点的类叫切面(也可以说封装通知方法的类叫切面)

目标对象:指的是当前的目标对象,我们需要进行功能增强的对象,也就是我们要抽取非核心代码的对象

代理:就是为当前目标对象所创建出来的代理对象(在AOP中代理对象不需要我们自己创建,以为它封装的就是代理模式)

连接点:就是抽取横切关注点的位置(就是说你的横切关注点在哪抽出来的)

切入点:定位连接点的方式(连接点是一个纯概念的问题,把非核心代码抽出来,我还得把它套到当前抽取出来的为位置(连接点),我们就可以通过切入点定位我们的连接点)

总结

目标类肯定是有的,代理类它要做的事情,从目标对象中把非核心业务代码,也就是横切关注点抽取出来,放在一个类中,这个叫切面。每一个横切关注点都是一个方法,这个方法叫通知。我们要在不改变源代码的基础上来做功能增强,我们不光要抽取出来,还得套到目标对象上,所以我们在哪抽的,就要套在哪里,这个位置叫连接点。连接点只是一个概念,通过切入点定位连接点。

作用

  • 简化代码:把方法中固定位置的重复代码抽取出来,让被抽取的方法更专注于自己的核心功能

  • 代码增强:在不改变源代码的基础上,然后进行把这个切面套到我们的目标对象的方法的执行过程中

http://www.lryc.cn/news/14195.html

相关文章:

  • 文件系统与动静态库的基本了解
  • netty——IO、NIO、AIO进化之路
  • AI稳定生成图工业链路打造
  • 20230220华南金牌主板u盘启动
  • 测试团队都在用哪些不错的测试用例管理平台?盘点6大主流测试管理系统
  • linux 系统编程之线程
  • 从0开始学python -35
  • 1.14 golang中的结构体
  • 原创不易,坚持更难
  • 计算机网络 | 谈谈TCP的流量控制与拥塞控制
  • Flask入门(7):内置装饰器(钩子函数)
  • Java8新特性
  • 哈希表题目:设计哈希集合
  • java static关键字 万字详解
  • 光谱实验反射、透射光谱测量
  • 【基础算法】之 冒泡排序优化
  • Python | 线程锁 | 3分钟掌握【同步锁】(Threading.Lock)
  • Linux下安装MySQL8.0的详细步骤(解压tar.xz安装包方式安装)
  • leaflet 绘制多个点的envelope矩形(082)
  • CAJ论文怎么批量免费转换成Word
  • 面试必问: 结构体大小的计算方法
  • Java中super函数的用法
  • 第十一届“泰迪杯”数据挖掘挑战赛携“十万”大奖火热来袭
  • 分享三个可以在家做的正规兼职工作,看到就是赚到
  • javaFx实现鼠标穿透画布,同时操作画布和桌面,背景透明,类似ppt批注
  • 客户服务知识库的最佳实践7个步骤
  • 多重继承的虚函数表
  • 第11篇:Java开发工具使用和代码规范配置
  • Rust模式匹配
  • GIT:【基础一】必要配置和命令