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

面试官:谈谈自己对IOC和AOP的理解? Part2

AOP(面向切面编程,Aspect-Oriented Programming)是一种编程范式,旨在增加模块化的支持,通过分离横切关注点(cross-cutting concerns)来提高代码的可维护性。以下是AOP中的一些关键术语:

  1. Aspect(切面):

    • 切面是一个模块化的横切关注点,它可能会影响多个类。切面通常包括通知(Advice)和类型(Pointcut)的定义。
  2. Join point(连接点):

    • 程序执行过程中的某个点,例如一个方法的执行或一个异常的处理。在Spring AOP中,仅支持方法的连接点。
  3. Pointcut(切点):

    • 匹配连接点的断言。通知(Advice)与切点表达式关联,并在与切点匹配的连接点上运行。
  4. Advice(通知):

    • 在切点的特定连接点处执行的动作。这是切面对程序行为的核心扩展。通知有几种类型,包括:
      • Before(前置通知): 在连接点之前执行的通知。
      • After(后置通知): 在连接点正常完成后执行的通知。
      • After returning(返回后通知): 在连接点返回一个结果后执行的通知。
      • After throwing(抛出后通知): 在连接点抛出异常后执行的通知。
      • Around(环绕通知): 在连接点之前和之后都可以执行的通知,并有能力决定是否执行连接点。
  5. Introduction(引入):

    • 为现有的对象类型声明额外的方法或字段。Spring AOP允许你向任何通知对象引入新的接口(及其实现)。
  6. Target object(目标对象):

    • 由一个或多个切面通知的对象。也被称为“被通知对象”。
  7. AOP proxy(AOP代理):

    • 由AOP框架创建的对象,用于实现切面契约(包括通知等功能)。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。
  8. Weaving(织入):

    • 将切面与其他应用程序类型或对象链接起来,以创建一个被通知的对象。这可以在编译时、类加载时或运行时完成。Spring AOP和其他纯Java AOP框架通常在运行时执行织入。

 以上这些都是AI出来的,接下来谈谈我自己的理解:首先我们知道OOP(面向对象编程)不能处理一些分散在多个类或对象中的公共行为(如日志记录,事务管理,权限控制,接口限流等),这些通常被称为横切关注点。如果我们在每个类中都重复这些代码,胡造成代码的冗余,复杂和难以维护。所以AOP解决了这一问题,AOP可以将横切关注点分从核心逻辑(核心关注点)中分离出来,实现关注点的分离。

这里讲一个例子,在学校中,我们要住在宿舍,但是宿舍的核心业务是睡觉,但是也可以学习,所以将学习的地方抽象出来成教学楼图书馆,集中到一个地方管理,睡觉我就管理睡觉,学习我就管理学习,分开管理便于维护,而这个“学习的地方”就可以称之为横切关注点,将它从宿舍中分离出来实现了横切关注点的分离。

我在学习AOP时,觉得它的思想和封装非常相似。在AOP中,切面的实现细节被隐藏,业务逻辑只要引用即可,封装也是隐藏对象的内部属性和实现方法,只暴露出接口与外界进行交互,这种分离效果二者极其相似。但封装专注于对象的内部,而AOP关注与多个对象和跨对象。


http://www.mrgr.cn/news/42033.html

相关文章:

  • 动手学深度学习(李沐)PyTorch 第 7 章 现代卷积神经网络
  • 关于联邦学习 每个参与者的 每次epoch结果是否需要聚合;联邦学习流程
  • 祖先重组图的推断与应用-文献精读59
  • HTML增加文本复制模块(使用户快速复制内容到剪贴板)
  • 【算法与图】通向高效解决方案的钥匙
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
  • 【数据结构强化】应用题打卡
  • Day01-postgresql数据库基础入门培训
  • (一)Web 网站服务之 Apache
  • 重新登录到Shell后查看或继续与之前正在运行的程序进行交互
  • 12.数据结构和算法-栈和队列的定义和特点
  • 讲讲Webpack的打包过程/打包原理/构建流程?
  • CMU 10423 Generative AI:lec15(Scaling Laws 大规模语言模型的扩展法则)
  • 硬件-开关电源-结构组成及元件作用
  • 2024 夸克网盘优质免费资源合集分享推荐 - 原创
  • 婚庆公司展示网站品牌获客
  • Linux用户
  • RabbbitMQ篇(环境搭建 - 下载 安装)(持续更新迭代)
  • 2025年数字人直播还能做吗?数字人直播的套路骗局须知网
  • SpringCloud 2024常用组件