首页 > 其他分享 >Spring17_AOP简介9

Spring17_AOP简介9

时间:2023-05-05 12:56:57浏览次数:29  
标签:简介 Spring17 代理 织入 通知 AOP 动态 切面

一、什么是AOP

 AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

 AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

二、AOP的作用及优势

  • 作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强
  • 优势:减少重复代码,提高开发效率,并且便于维护

三、AOP的底层实现

 实际上,AOP 的底层是通过 Spring 提供的的动态代理技术实现的。在运行期间,Spring通过动态代理技术动态的生成代理对象,代理对象方法执行时进行增强功能的介入,在去调用目标对象的方法,从而完成功能的增强。

四、AOP的动态代理技术

 常用的动态代理技术

  • JDK 代理 : 基于接口的动态代理技术
  • cglib 代理:基于父类的动态代理技术

 

五、JDK的动态代理

 

六、cglib的动态代理

 

七、AOP相关概念

 Spring 的 AOP 实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强。

 在正式讲解 AOP 的操作之前,我们必须理解 AOP 的相关术语,常用的术语如下:

  • Target(目标对象):代理的目标对象
  • Proxy (代理):一个类被 AOP 织入增强后,就产生一个结果代理类
  • Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点
  • Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义
  • Advice(通知/ 增强):所谓通知是指拦截到Joinpoint 之后所要做的事情就是通知
  • Aspect(切面):是切入点和通知(引介)的结合
  • Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入

八、AOP开发明确的事项

 1. 需要编写的内容

  • 编写核心业务代码(目标类的目标方法)
  • 编写切面类,切面类中有通知(增强功能方法)
  • 在配置文件中,配置织入关系,即将哪些通知与哪些连接点进行结合

 2. AOP技术实现的内容

  Spring 框架监控切入点方法的执行。一旦监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。

 3. AOP 底层使用哪种代理方式

  在 spring 中,框架会根据目标类是否实现了接口来决定采用哪种动态代理的方式。

九、知识要点

  • aop:面向切面编程
  • aop底层实现:基于JDK的动态代理 和 基于Cglib的动态代理
  • aop的重点概念:

    Pointcut(切入点):被增强的方法

    Advice(通知/ 增强):封装增强业务逻辑的方法

    Aspect(切面):切点+通知

    Weaving(织入):将切点与通知结合的过程

  • 开发明确事项:

    谁是切点(切点表达式配置)
    谁是通知(切面类中的增强方法)
    将切点和通知进行织入配置

 

标签:简介,Spring17,代理,织入,通知,AOP,动态,切面
From: https://www.cnblogs.com/ajing2018/p/17373795.html

相关文章

  • 动态规划简介
    目录动态规划与分治法基本思想和步骤实现方法钢条切割问题递归方法动态规划子问题图典型题目参考文献动态规划与分治法动态规划(dynamicprogramming)与分治方法相似,都是通过组合子问题的解来求解原问题(在这里,“programming”指的是一种表格法,并非编写计算机程序)。分治方法将问题......
  • Android dtbo(1) dto简介
    设备树(DT,DeviceTree)是用于描述non-discoverable(google这样写的,意思应该就是硬件信息看不到)硬件的命名节点和属性构成的一种数据结构。操作系统(例如在Android中使用的Linux内核)会使用DT来支持Android设备使用的各种硬件配置。硬件供应商会提供自己的DT源文件,......
  • Spring17_注解开发7
    一、Spring原始注解Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率。Spring原始注解主要是替代<Bean>的配置注入的3个注解用来替代property注入的。注意:使用注解进行开发时,需要在a......
  • schema模块简介 - 验证数据类型
    目录1schema模块简介2快速上手1.给Schema类传入类型(int、str、float等)2.给Schema类传入可调用的对象(函数、带__call__的类等)3.给Schema类传入带有validate方法的对象4.给Schema类传入容器对象(list、tuple、set等)5.给Schema传入一个字典对象(大部分使用Schema的场景都是传入......
  • Spring17_配置数据源6
    一、数据源(连接池)的作用数据源(连接池)是为提高程序性能而出现的事先实例化数据源,初始化部分连接资源使用连接资源时从数据源中获取使用完毕后将连接资源归还给数据源常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等二、数据源开发步骤1.导入数据源的坐标和数据......
  • Spring AOP官方文档学习笔记(三)之基于xml的Spring AOP
    1.声明schema,导入命名空间(1)如果我们想要使用基于xml的springaop,那么,第一步,我们需要在xml配置文件中声明springaopschema,导入命名空间,如下这是一个标准的模板<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmln......
  • StE355钢板简介、StE355执行标准、StE355化学成分
    1、StE355钢板简介:StE355是欧洲低合金钢板牌号,执行标准DIN17102,生产厚度8mm-500mm之间,StE355一热轧状态交货,StE355原厂质保书屈强参数StE355德标商标,StE355是低合金结构钢。StE355钢板自身不仅有着非常高的强度而且还具备一定的韧性、抗疲劳性、抗冲击性、耐磨性、焊接及易加工性能......
  • SpringSecurity简介
    ------------恢复内容开始------------SpringSecurity简介SpringSecurity是spring家族中的一个安全框架,相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富一般来说中大型的项目都是使用springsecurity来做安全框架,小项目有Shiro的比较多,因为相比与Spri......
  • 23 IIC(一)IIC协议简介
    1硬件连接IIC硬件接线一般如下所示。从主控芯片引出两根线SCL和SDA。外加一个上拉电阻2数据传输格式2.1写操作主控芯片发出start信号主控芯片发出一字节的数据。前7bit为设备地址,最后一bit为方向:0表示写,1表示读主设备等待从设备应答主设备接到从设备的应答后开始发送......
  • dockerfile概念简介——镜像分层
    一、dockerfile概念dockerfile是自定义镜像的一套规则dockerfile由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层1.1docker镜像的分层dockerfile的原理就是镜像分层。Dockerfile中的每个指令都会创建一个新的镜像层(是一个临时的容器,执行完后......