AOP的工作流程和核心概念及代理对象

news2024/11/19 19:29:35

1. 工作流程及核心概念

  1. Spring容器启动
  2. 读取所有切面配置中的切入点,未配置的切入点不进行读取

在这里插入图片描述

  1. 初始化bean,判断bean对应的类中的方法是否匹配到任意切入点
  • 匹配成功:在Spring框架中,Bean初始化时会通过扫描程序中的带有特定注解的Bean,并将它们织入到匹配的切入点上。
  • 匹配失败:如果一个Bean对应的类中的方法没有匹配到任何切入点,这个Bean仍然会被正常初始化,只是没有被织入到任何切面中。
  • 具体来说,当Spring容器初始化Bean的时候,如果该Bean的类上标记了某个AOP注解,例如@Aspect,则Spring容器会自动创建一个代理来拦截该类所在的切点,使得切面代码能够运行在切点的前、后、抛出异常等关键位置,从而实现特定的功能。

  • 如果某个Bean的类上没有任何AOP注解(如@Aspect),或者虽然注解了但该类的方法没有匹配到任何切入点那么Spring就会将该类普通实例化,不再实现任何AOP操作。这意味着该Bean将不参与任何AOP操作,而是普通的Bean行为,可以像普通的Java对象一样进行调用等操作。

  1. 获取bean执行方法
    获取到的bean是代理对象时 ,根据代理对象的运行模式运行原始方法与增强的内容,完成操作

1.1 代理对象

这里对上面的代理对象做出一点补充:

  1. 在AOP中,代理对象是实现切面的核心机制之一。在Spring框架中,当Bean需要织入切面时,Spring容器会对该Bean进行代理,生成代理对象并在运行时拦截指定的连接点,执行切面定义的特定行为,从而实现AOP的横切关注点(pointcut)
  2. 具体来说,Spring框架支持两种类型的代理:JDK动态代理和CGLib动态代理。当代理Target对象是一个接口类型时,Spring将使用JDK动态代理来创建代理对象。否则,Spring将使用CGLib动态代理来创建代理对象。无论是哪种类型的代理,Spring在Bean初始化时都会对其进行代理,生成一个新的代理对象,并在运行时将连接点织入到代理对象中,从而实现AOP的目的。
  3. 因此,如果某个Bean是代理对象,通常意味着它已经被Spring框架代理并实现了AOP的横切关注点,可以在运行时通过代理对象进行调用,触发相应的切面逻辑。同时,代理对象通常会包含与其对应的目标对象的引用,以便在代理中可以调用目标对象中的代码。
  • 实际上就是代理对象实现了和目标对象相同的接口或继承了目标对象的所有方法,并且在代理对象中引入了切面逻辑。

1.2 核心概念

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】低速数字输入电路

1、方案设计:单通道、单向、反相器 该电路采用单通道,单向光耦,只支持漏型输入,电路的输入端压差满足24V DC10%(21.6V DC-26.4V DC),输出端电压在0~3.3V范围摆动。 1.1关键技术规格 1.2具体原理图 1.3电路原理详解 …

直接使用ChatGPT的方法

ChatGPT是一个基于人工智能的聊天机器人,它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术,包括深度学习和神经网络,以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题,包括但不限于常见问…

高效学习传感器|霍尔式传感器

01、霍尔式传感器的工作原理 1●霍尔效应 霍尔式传感器的物理基础是霍尔效应。如图1所示,在一块长度为l、宽度为b、厚度为d的长方体导电板上,左、右、前、后侧面都安装上电极。在长度方向上通入电流I,在厚度方向施加磁感应强度为B的磁场。 ■…

并发编程13:邮戳锁StampedLock

文章目录 13.1 关于锁的面试题13.2 简单聊聊ReentrantReadWriteLock13.2.1 是什么?13.2.2 特点 13.3 面试题:有没有比读写锁更快的锁?13.4 邮戳锁StampedLock13.4.1 是什么?13.4.2 它是由饥饿问题引出13.4.3 StampedLock的特点13.…

【Linux】IO多路转接-select

文章目录 多路转接IO模型I/O多路转接-selectselect初识select函数select的核心功能fd_set的执行流程select就绪条件基于select的服务器Sock.hppSelect_server.cpp存在的问题 select的优点select的缺点select的适用场景 多路转接IO模型 Linux下多路转接的方案常见的有三种&…

人群归因分数(Population Attributable Fraction, PAF):概念、简单计算案例

专注系列化、高质量的R语言教程 推文索引 | 联系小编 | 付费合集 本篇目录如下: 1 人群归因分数 1.1 相对风险度1.2 人群归因分数2 案例 2.1 示例数据2.2 计算案例12.3 计算案例22.4 计算案例33 总结 1 人群归因分数 人群归因分数(Population Attributab…

100G CFP光模块类型应用场景详解

目前,全球电信行业平稳发展,宽带用户稳定增长,随着大数据市场的迅猛发展,骨干网、接入网和数据中心建设均需采购大量的光通信产品,从而给光模块行业带来了全新的市场机遇。如今,100G光模块已成为市场发展的…

最新DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到,要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时,提到要把减污降碳协同增效作为促…

载誉前行!北大青鸟课工场蝉联中国高校计算机教育MOOC联盟会员单位!

近日,北大青鸟旗下的大学生专属品牌课工场喜获殊荣,蝉联中国高校计算机教育MOOC联盟会员单位。这是对北大青鸟课工场一直以来在职业教育领域的卓越表现的肯定,也是对北大青鸟课工场品牌价值的进一步提升。 作为中国高校计算机教育MOOC联盟的会…

JavaScript全解析-面向对象

类语法的书写 ●在 ES6 的语法标准中, 管构造函数不叫做构造函数了, 叫做 类 ●语法: class 类名 {constructor () { // 书写属性 } 书写原型上的方法 方法名 () {} } // ES6 类的语法class Person {// 等价于 ES5 的构造函数体constructor(name) {this.name name}// 直接书写…

Protobuf详解

文章目录 Protobuf是什么传输协议类比 Protobuf协议语法Protobuf类型Protobuf编译器下载配置环境变量 编写一个入门程序 Java是绝大多数人最常用的编程语言,那么作为Java开发如何学习protobuf呢? 步骤如下: 1.下载并安装 Protocol Buffers 工…

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) - 红帽企业 Linux 9.2 发布

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) 红帽企业 Linux 9.2 请访问原文链接:https://sysin.org/blog/rhel-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 红帽企业 Linux 9 红帽企业 Linux 9.…

把握协作机器人智能、灵活、安全三大矩阵

原创 | 文 BFT机器人 引言 协作机器人是一种能够和人类工作在同一空间的机器人,能够协同完成任务,为制造业和其他领域提供了更高效和灵活的解决方案。 目前,协作机器人市场正在迅速增长,因为越来越多的制造业和其他领域需要自动化…

PCIE使用的有效的命令

查看偏移内容 setpci --dumpregs capabilities查看 pci标准配置头空间 -x pci capbility配置空间 -xxx pcie扩展配置空间-xxxx 红色框框中的第一列对应具体的偏移,第二列对应的是设备的capability id, 第三列对应的是next capability id的偏移。 cap解释 在PCIe规…

电动车仪表盘语音芯片,带有数码管驱动多功能语音ic,WTV380-32N

为何要在电动车仪表盘上加入语音芯片? 电动车的驾驶过程中,驾驶员需要时刻关注车辆的状态和行驶信息,如电量、速度、里程等。这些信息如果以语音提示的方式进行播报,可以让驾驶员更加方便快捷地获取车辆状态,并且避免…

算法加密与解密、字符集、编码方式

加密算法 加密保证数据不会被窃取或者修改 不可逆加密算法 哈希算法 压缩映射:散列又称为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。 哈希算法(Hash)又称摘要算法(D…

相比欧美国家,国内开发软件外包项目的优势

软件开发在全球都有需求,尤其是欧美发达国家,不管是什么样的技术革命都离不开计算机软件的配套开发。另一方面欧美国家技术人员少且成本也比较高,相应的国内技术人员多而且技术全面,成本也低, 因此在国内找软件外包开发…

Hello, Mojo——首次体验Mojo语言

Hello, Mojo——首次体验Mojo语言 文章目录 Hello, Mojo——首次体验Mojo语言一、前言二、Mojo有哪些独特的功能使它不同于Python?三、可以在 Mojo 中导入和使用的 Python 哪些包?四、为什么参数化在 Mojo 中对于使用 SIMD 类型和硬件加速器很重要&#…

PowerShell install 一键部署TortoiseSVN

TortoiseSVN TortoiseSVN是 Subversion 版本控制系统的一个免费开源客户端,可以超越时间的管理文件和目录。文件保存在中央版本库,除了能记住文件和目录的每次修改以外,版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本&#x…

玩机搞机--定制系统 编译系统选项 隐藏设置 关闭app联网 增加设置选项【一】

在接待一些定制rom的过程中。对于有些客户的有些要求作出对应的系统编译操作选项。例如 增减手机设置中的某些选项。 💔💔💔💔💔💔💔💔💔💔💔&am…