AOP和Spring AOP介绍

AOP和Spring AOP介绍

文章目录

  • AOP和Spring AOP介绍
    • 一.AOP简介
    • 二. 传统开发存在的弊端
    • 三. AOP实现原理
    • 四.Spring AOP
    • 五.AOP相关术语

一.AOP简介

  • AOP为Aspect Oriented Programming的缩写,意为:面向切面编程。是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,函数式编程的一种衍生范型;
  • AOP 通过预编译方式和运行期动态代理实现程序功能的统一维护;
  • 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

二. 传统开发存在的弊端

假设你正在开发的项目中需要在保存之前添加一个功能(例如权限校验),此时需要手动在项目中所有保存功能之前添加权限校验,我们可以通过抽取一个基类,里面写了权限校验功能,让所有类继承此类,这是传统面向对象继承的方式开发,需要改动大量代码;
在这里插入图片描述
我们的目标: 不破坏原来的类,生成一个代理类,在原来类的基础上进行增强,可以实现随时添加,随时取消添加的功能

解决: AOP通过代理类采用横向抽取机制取代了传统纵向继承
在这里插入图片描述

三. AOP实现原理

  1. JDK动态代理
    JDK动态代理的实现是在运行时,根据一组接口定义,使用Proxy、InvocationHandler等工具类去生成一个代理类和代理类实例。
    在这里插入图片描述
  2. cglib动态代理
    cglib是一个第三方开源代码生成类库(使用时一定要在spring的核心包当中引入cglib),cglib动态添加类的属性和方法,采用的是继承方式来产生的代理对象
    在这里插入图片描述

四.Spring AOP

  • Spring使用这种思想最好的框架
  • Spring的AOP有自己的实现方式,但是这种方式非常繁琐,因此Spring放弃了自己传统的方式 ,引入AspectJ作为自身AOP的开发
  • AspectJ 是一个AOP的框架

五.AOP相关术语

  1. Joinpoint:连接点
    (1)可以被拦截到的方法
    (2) 能够被增强的方法,这些方法就可以称为是连接点
    在这里插入图片描述
    其中save() ,delete() ,update() ,find()都是 Joinpoint连接点


  2. Pointcut:切入点
    真正被拦截(增强)的方法
    在这里插入图片描述
    其中的save()方法就是 Pointcut切入点


  1. Advice:通知
    增加的内容,通常都是封装成一个方法, 这个方法我们就称为通知
    在这里插入图片描述
    其中的checkPrivilege()方法就是Advice通知

  1. Introduction:引介
    (1)类层面的增加
    (2)给原有的类添加一些新的属性方法
    (3)在开发中通常都是给某个方法进行增加

  1. Target:被增加的对象
    在这里插入图片描述
    其中GoodsDao就是Target被增加的对象

  1. Weaving:织入
    将通知应用到目标对象的过程

  1. Proxy:代理对象

  1. Aspect:切面
    多个通知和多个切入点的集合

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

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

相关文章

新鲜出炉!大规模神经网络最新综述!

来源:arXiv编译:机器之心在本综述论文中,研究者解释了不同技术的工作原理、评估和比较,还分析了一些实现这些技术的框架。现代深度学习和人工智能技术的发展涉及使用深度神经网络(DNN)来解决图像、视频、音…

数据结构与算法理论概述

数据结构与算法理论概述 文章目录数据结构与算法理论概述数据结构概述◆ 数据结构涵盖的内容◆ 存储数据算法概述◆ 算法的基本特性◆ 算法设计要求◆ 算法分析数据结构概述 狭义上:数据结构是专门研究数据存储的问题; 数据的存储包括:个体的…

战略性基础研究的由来及国际实践研究

来源:微信公众号中国科学院院刊,原载:《中国科学院院刊》2022年第3期作者:阿儒涵1,2、杨可佳3、吴丛1,2、李晓轩1,2*1 中国科学院科技战略咨询研究院2 中国科学院大学公共政策与管理学院3 挪威奥斯陆大学技术创新和文化研究中心近…

顺序表Sqlist.cpp

顺序表Sqlist.cpp 文章目录顺序表Sqlist.cpp1 顺序表插入逻辑2 顺序表删除逻辑3 代码演示4 运行结果1 顺序表插入逻辑 在表的第 i 个位置前插入一个元素 实现步骤: 将第 n 至第 i 位的元素向后移动一个位置;将要插入的元素写到第 i 个位置;表…

顺序表的插入删除查找遍历

顺序表的插入删除查找遍历 文章目录顺序表的插入删除查找遍历代码运行结果截图代码 #define Maxsize 100typedef int ElemType; typedef struct{ElemType data[Maxsize];int length; }Sqlist;void Createlink(Sqlist &L) {int a;printf("请输入你要创建的顺序表的长…

Yann LeCun最新访谈:能量模型是通向自主人工智能系统的起点

来源:ZDNet编译:钱磊编辑:陈彩娴继自监督学习之后,Yann LeCun 在接受 ZDNet 的最新访谈中又着重探讨了他在几年前曾大篇幅推崇的概念:「能量模型」(energy-based models)。什么是能量模型&#…

HTML5崛起之时,Java桌面时代就已经终结了

来源:AI前线作者:Steve Hannah翻译:核子可乐编辑:燕珊2004 年 Google Maps 的面世标志着 Java 桌面时代的终结,也改变了桌面环境下“跨平台”的基本定义。本文作者以个人视角对 Java 桌面发展历程做了回顾,…

单链表介绍及其实现

链表 文章目录链表链表的专业术语:实现链表的专业术语: 首节点:存放第一个有效数据的结点;尾结点:存放最后一个有效数据的结点;尾指针指向;头结点:头结点的数据类型和首结点的类型一…

Linux基础概念及常用命令

Linux基础概念及常用命令 文章目录Linux基础概念及常用命令1 Linux概述1.1 为什么要学Linux1.2 Linux简介1.3 Linux 发行版1.4 Linux 应用领域2 Linux常用命令2.1 Linux目录结构2.2 Linux目录命令2.3 Linux文件命令2.4 Linux其他命令1 Linux概述 1.1 为什么要学Linux linux诞生…

PNAS新研究:剑桥学者发现,有些 AI 模型无法被计算

来源:AI科技评论作者:Ailleurs编辑:陈彩娴近日,剑桥学者在《美国科学院院报》(PNAS)上发表了一篇名为“The Difficulty of Computing Stable and Accurate Neural Networks: On the Barriers of Deep Learn…

量子计算机首次成功模拟化学反应

SHUTTERSTOCK来源:IEEE电气电子工程师━━━━利用谷歌的Sycamore量子处理器,科学家们进行了迄今为止涉及量子计算机的最大规模的化学模拟。他们采用了一种新技术,可能有助于抵抗量子电路中常见的噪声。量子计算机理论上可以实现量子优势&…

单链表的按位置插入和删除

单链表的插入和删除 文章目录单链表的插入和删除1 单链表插入2 单链表删除3 代码实现1 单链表插入 要想将结点s插入到ai与ai1之间,不需要移动数据元素,只需要在ai与ai1之间插入一个新的结点,也就是我们要插入的结点s。关键就是要修改结点p的…

DeepMind最新研究:如何将「大语言模型」 训练到最优?

来源:AI科技评论 作者:维克多Transformer的提出距离我们已经有5年的时间,随着模型规模的不断增长,性能提升也逐渐出现边际效益递减的情况。如何训练出最优性能的大模型?最近,DeepMind做了一项调查&#xf…

给计算机处理器做手术来研究大脑

来源:混沌巡洋舰在人类对大脑认识的历史上,曾经使用过很多隐喻来描述脑,比如齿轮机械、电话交换机、计算机等等。目前,“脑就像一台计算机”这个隐喻仍然占据着主导地位,尽管人们对于这个隐喻的贴切程度的看法存在分歧…

为什么百度查到的ip地址和ipconfig查到的不同;详解公网Ip和私网ip; 网络分类ABC类;

文章目录1.百度查到的ip和ipconfig查到的不同1.1引出问题1.2不一样的原因2.IP地址分类2.1IP类别2.1 Public IP和Private IP3.总结3.1整理上网流程3.2遗留问题1.百度查到的ip和ipconfig查到的不同 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少…

国科金:共融机器人基础理论与关键技术研究重大研究计划

来源:学术头条国家自然科学基金委员会现发布共融机器人基础理论与关键技术研究重大研究计划 2022 年度项目指南,请申请人及依托单位按项目指南中所述的要求和注意事项申请。 国家自然科学基金委员会 2022 年 4 月 2 日一、科学目标本重大研究计划瞄准国…

停止追赶最新的 RPA 趋势

来源:AI前线作者:Anupam Krishnamurthy译者:Phoenix策划:蔡芳芳本文最初发布于 anupam.de 博客,由 InfoQ 中文站翻译并分享。我做了 4 年的 RPA 开发者——2017 至 2021 年。在 2019 年底,我做了一个重要的…

请求转发与重定向的区别和执行流程

请求转发与重定向的区别和执行流程 文章目录请求转发与重定向的区别和执行流程1 请求转发与重定向区别2 现实生活的例子2.1 重定向2.2 请求转发3 重定向-流程图、代码、结果3.1 流程图3.2 代码BoyServlet3.3 代码GirlServlet3.4 web.xml文件3.5 结果4 请求转发-流程图、代码、结…

牛津大学最新调研:AI面临基准危机,NLP集中“攻关”推理测试

来源:AI科技评论作者:维克多人工智能(AI)基准为模型提供了衡量和比较的路径,超越基准,达到SOTA,经常成为顶会论文的标配。同时,有些基准确实推动了AI的发展,例如ImageNet 基准测试对…

Postman使用小教程--基础入门篇

文章目录1 Postman介绍2 postman基础功能介绍2.1 postman基础页面2.2 postman基础页面介绍2.2 接口测试流程和原理2.3 请求区域介绍3 导出和导入接口集3.1 导出3.2 导入4 设置环境变量4.1 环境变量优先级4.2 新建环境变量4.3 将返回值的某个数据设置为环境变量4.4 将其他的常用…