spring aop核心原理概念

目录

  • 概述
  • aop核心概念解析
    • Target(目标对象)
    • Joinpoint(连接点)
    • Advice(通知/增加)
    • Pointcut(切入点)
    • Aspect(切面)
    • Advisor(通知器)
    • Weaving(织入)
    • Proxy(代理)
    • Introduction(引介)
  • 结束

概述

aop核心概念解析

Target(目标对象)

代理的目标对象
目标对象(Target)的确立,是由切入点来决定的。
增加的对象是具体的方法。

// 切入点表达式,按表达式过滤服务的类,找到其对应符合的目标对象
execution(* com.**.ServiceImpl.*())

方法选择好之后,还要再选择通知类型
通知器(Advisor)/切面(Aspect) 是一样的概念,只是描述不一样。

  • 前置通知
  • 后置通知
  • 最终通知
  • 异常通知
  • 环绕通知

连接点(JointPoint) 可以看成是目标对象和代理对象所连接的方法。其实就是目标对象的方法;通过该连接点可以获取目标方法

Joinpoint(连接点)

所谓连接点是指那些被拦截到的点。在 spring 中这些点指的是方法,因为 spring 只支持方法类型的连接点。

  • 待增强的目标对象中的目标方法
  • 增强功能和目标对象的连接地点

Advice(通知/增加)

所谓通知是指拦截到 JointPoint 之后所要做的事情就是通知。通知分为前置通知、后置通知、异常通知、最终通知、环绕通知(切面要完成的功能)

  • 通知类型:表示增强功能要执行的时机
    • 前置通知
    • 后置通知
    • 最终通知
    • 异常通知
    • 环绕通知
  • 通知功能
    • 自定义的一些功能类,功能类中含多个办法,每一个方法,就是一个通知功能。

Pointcut(切入点)

所谓切入点是指要对哪些 Jointpoint 进行拦截的定义。

  • 通过切入点表达式,去匹配合适的目标对象,可能有很多对象,但是只有部分对象需要进行功能增强。
  • 切入点表达式:aop

Aspect(切面)

是切入点和通知的结合,需要自己来编写和配置的。

Advisor(通知器)

Aspect 很相似。

Weaving(织入)

是指将增强应用到目标对象来创建新的代理对象的过程

  • 静态织入

    • 编译期间
    • AspectJ 技术使用的就是静态织入
    • 静态织入原理
      在这里插入图片描述
  • 动态织入

    • 运行期间
    • spring aop 技术使用的就动态织入
    • 动态织入的方式
      • 基于 jdk 动态代理实现
      • 基于cglib 动态代理实现

Proxy(代理)

一个类被 aop 织入增强后,就产生了一个结果,代理类。

  • 在 spring 中,一个目标对象可以产生一个代理对象

Introduction(引介)

引介是一种特殊的通知,在不修改类代码的前提下,Introduction 可以在运行期为类动态的添加一些方法或Field

结束

spring aop核心原理概念,至此结束。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云计算领域的第三代浪潮!

根据IDC不久前公布的数据,2023年上半年中国公有云服务整体市场规模(IaaS/PaaS/SaaS)为190.1亿美元,阿里云IaaS、PaaS市场份额分别为29.9%和27.9%,都远超第二名,是无可置疑的行业领头羊。 随着人工智能(AI)…

面试题:什么是自旋锁?自旋的好处和后果是什么呢?

文章目录 什么是自旋自旋和非自旋的获取锁的流程 自旋锁的好处AtomicLong 的实现实现一个可重入的自旋锁示例自旋的缺点适用场景 什么是自旋 “自旋”可以理解为“自我旋转”,这里的“旋转”指“循环”,比如 while 循环或者 for 循环。“自旋”就是自己…

pwn:[NISACTF 2022]ReorPwn?

题目 按正常方式走,发现指令被反着输出

抓住机会:2024年企业生成式AI应用的未来

在 Menlo Ventures 的AI趋势研究报告中,对美国和欧洲的 450 多名企业高管进行了调查,并与另外十几位高管进行了交谈,以了解当今企业应用AI的状况。尽管大肆宣传,与其他软件类别相比,企业对生成式AI的投资仍然小得惊人。…

qgis添加arcgis的mapserver

左侧浏览器-ArcGIS地图服务器-右键-新建连接 Folder: / 展开-双击图层即可

Node.js入门指南(三)

目录 Node.js 模块化 介绍 模块暴露数据 导入模块 导入模块的基本流程 CommonJS 规范 包管理工具 介绍 npm cnpm yarn nvm的使用 我们上一篇文章介绍了Node.js中的http模块,这篇文章主要介绍Node.js的模块化,包管理工具以及nvm的使用。 Node…

排序算法:归并排序、快速排序、堆排序

归并排序 要将一个数组排序,可以先将它分成两半分别排序,然后再将结果合并(归并)起来。这里的分成的两半,每部分可以使用其他排序算法,也可以仍然使用归并排序(递归)。 我看《算法》…

【spring(五)】SpringMvc总结 SSM整合流程

目录 一、SpringMVC简介: 二、SpringMVC快速入门: 三、SpringMVC bean的管理:⭐ ①配置bean ②扫描bean 四、SpringMVC配置类:⭐ 五、SpringMVC 请求与响应 六、SpringMVC REST风格 七、SSM整合 异常处理: 八、…

【STM32】新建工程

学习来源:[2-2] 新建工程_哔哩哔哩_bilibili 目前STM32的开发主要有基于寄存器的开发方式、基于标准库也就是库函数的方式和基于HAL库的方式。本学习是基于库函数的方式。(各种资料去百度云下载) 1 建立工程文件夹 Keil中新建工程&#xf…

浅谈dll劫持免杀

文章目录 前置知识dll加载dll寻找DLL劫持-白加黑-导入加载DLL劫持-白加黑-导出编译DLL劫持-白加黑-图片分离hookdll原理win api核心代码注意事项 前置知识 基础技能 c语言基本知识win32 API 知识会在微软官网查询APIPE结构知识 原理 DLL劫持的原理主要就是windows下加载DLL…

医学检验科LIS系统源码 样本采集、检验、分析

LIS把检验、检疫、放免、细菌微生物及科研使用的各类分析仪器,通过计算机联网,实现各类仪器数据结果的实时自动接收、自动控制及综合分析;系统可与条码设备配套使用,自动生成条码,减少实验室信息传递中人为因素导致的误…

搭建Linux环境 云服务器指南

我们要学习Linux的相关知识,必须搭建Linux环境 这里有三种方式: 这篇文章我们介绍一下云服务器的购买 购买云服务器 我们以腾讯云为例, 其他的服务器厂商也是类似 云服务器或轻量级应用服务器都是可以的,我们以轻量级应用服务器为例 1.进入…

初学vue3与ts:setup与setup()下的数据写法

把setup写在script里 <template><div><div class"index-title">script setup</div><div class"title">字符串&#xff1a;</div><div class"title-sub">ref版&#xff1a;{{strRef}}</div><…

量子计算 | 解密著名量子算法Shor算法和Grover算法

专栏集锦&#xff0c;大佬们可以收藏以备不时之需 Spring Cloud实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏&#xff1a;https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏&#xff1a;https:/…

数字化转型如何赋能企业实现数字化增值?

随着科技的不断发展&#xff0c;数字化转型已经成为了企业营销的重要趋势。数字化转型不仅可以提高企业的运营效率&#xff0c;还可以更好地满足消费者的需求&#xff0c;提升企业的市场竞争力。 一、数字化转型可以提高企业营销的精准性 在传统的企业营销中&#xff0c;营销人…

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-5:队列)

学习之路主要为FreeRTOS操作系统在STM32F103&#xff08;STM32F103C8T6&#xff09;上的运用&#xff0c;采用的是标准库编程的方式&#xff0c;使用的IDE为KEIL5。 注意&#xff01;&#xff01;&#xff01;本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

Robust taboo search for the quadratic assignment problem-二次分配问题的鲁棒禁忌搜索

文章目录 摘要关键字结论研究背景1. Introduction 常用基础理论知识2. The quadratic assignment problem3. Taboo search3.1. Moves3.2 Taboo list3.3. Aspiration function3.4. Taboo list size4. Random problems5. Parallel taboo search 研究内容、成果7. Conclusion 潜在…

Spring AOP:什么是AOP? 为什么要用AOP?如何学习AOP?

文章目录 &#x1f386;前言1.为什么要用 AOP3.如何学习去 AOP?3.1 AOP 的组成切面&#xff08;Aspect&#xff09;连接点&#xff08;Join Point&#xff09;切点&#xff08;Pointcut&#xff09;通知&#xff08;Advice&#xff09; 3. Spring AOP 实现3.1 普通的方式实现 …

画中画视频剪辑:如何实现多画面融合,提升创作质量

在视频剪辑的过程中&#xff0c;画中画是一种常见的技巧&#xff0c;它能够将多个画面融合在一起&#xff0c;创造出一种独特的效果&#xff0c;增强视频的观赏性和表现力。这种技巧常常用于电影、电视和广告中&#xff0c;以增加视觉冲击力&#xff0c;引导注意力&#xff0c;…

系列十五、BeanDefinition

一、BeanDefinition 1.1、概述 BeanDefinition是一个接口&#xff0c;主要负责存储bean的定义信息&#xff0c;决定bean的生产方式&#xff0c;类似于说明书。后续BeanFactory就可以根据这些信息生产bean了。比如实例化&#xff1a;可以通过反射得到实例对象&#xff1b;比如&…
最新文章