idea__Spring5框架11——Aop的概念、术语。

本文详细介绍了Spring AOP的概念,包括连接点、切入点、通知、引介、目标对象、织入、代理和切面等关键术语,并阐述了AOP在减少重复代码、提高开发效率和维护便利性上的优势。通过实际例子解释了通知的五种类型以及织入过程。此外,还强调了在Spring中如何声明切入点和通知关系以创建切面。最后,概述了开发和运行阶段的角色分工,帮助读者深入理解Spring AOP的使用。
摘要由CSDN通过智能技术生成

一、什么是Aop?

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

  简单的说它就是把我们程序重复的代码抽取出来,在需要执行的时候,使用动态代理的技术,在不修改源码的基础上,对我们的已有方法进行增强。

Aop的作用及好处:
作用:
  在程序运行期间,不修改源码对已有方法进行增强。
优势:
  减少重复代码
  提高开发效率
  维护方便

二、AOP相关术语?

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

在这里插入图片描述
在业务层的接口中,所有的方法都是连接点,它是连接我们的业务。

2、Pointcut( 切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。

在这里插入图片描述
在这里插入图片描述
在业务层接口的所有方法中,都是连接点,但只是被增强的才叫做切入点。很明显这里的test方法只是连接点,不是切入点,因为它没有被增强。

3、Advice( 通知/ 增强):所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。

通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。

在这里插入图片描述
在这里插入图片描述
动态代理中,invoke方法具有拦截的功能,能拦截被代理对象中执行的所有方法,那它拦截这些方法之后干什么事呢?它就是开启事务到释放资源,从这一点上,我们就进一步得知什么叫通知呢?它是指拦截之后要干的事情。那么拦截之后就是要提供事务的支持。那谁是通知呢?就是我们的TransactionManager,因为当我们拦截到它的之后,就要开始对它事务的支持。

通知的类型:前置通知,后置通知,异常通知,最终通知,环绕通知。

在这里插入图片描述

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

5、Target( 目标对象):代理的目标对象。

在这里插入图片描述

这个就是被代理的对象

6、Weaving( 织入):

   是指把增强应用到目标对象来创建新的代理对象的过程。
   spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入。

在这里插入图片描述

我们原有的这个service无法实现事务的支持,于是我用了动态代理技术创建了一个新的对象,返回了一个代理对象,那在返回的一个代理对象的时候,我在从中给它加入了事务的支持,那整个这个加入事务支持的这个过程叫织入。

7、Proxy(代理):一个类被 AOP 织入增强后,就产生一个结果代理类。

在这里插入图片描述

八、Aspect( 切面):是切入点和通知(引介)的结合。

哪些方法被增强过,哪些方法就是切入点,通知指的就是那些提供了公共代码的类,那这些公共代码什么时候去执行呢,我们说,我们写代码的时候很容易,我们开启事务这些,什么时候能把这些事情说明白呢?那这个时候我们说,建立切入点方法,和通知方法在执行调用的对应关系就是切面。

三、学习 spring中的aop要明确的事

a 、开发阶段(我们做的)
   编写核心业务代码(开发主线):大部分程序员来做,要求熟悉业务需求。
   把公用代码抽取出来,制作成通知。(开发阶段最后再做)
   在配置文件中,声明切入点与通知间的关系,即切面。
b 、运行阶段(Spring 框架完成的)
   Spring 框架监控切入点方法的执行。一旦监控到切入点方法被运行,使用代理机制,动态创建目标对象的代理对象,根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。

————————
创作不易,如觉不错,随手三连点赞,收藏,关注,谢谢~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值