spring-aop,spring中的aop怎么理解
一、对AOP的初印象
如何解决写爬虫IP受阻的问题?立即使用。
先给个比较专业的名词(来自百度):
在软件行业,AOP是Aspect Oriented Programming的缩写,意思是:面向方面的编程,通过预编译和运行时动态代理实现程序功能的统一。
一种维护技术。AOP是OOP的延续,是软件开发的热点,是Spring框架中的重要内容,是函数式编程的衍生范式。利益
AOP可以用来隔离业务逻辑的各个部分,从而降低业务逻辑各个部分之间的耦合度,提高程序的复用性,提高开发效率。
率。让我们举一个简单易懂的例子:
要理解切面编程,首先需要理解什么是切面。用刀把一个西瓜分成两瓣,切口就是切面;炒菜,锅和灶一起完成炒菜,锅和灶都是切面。在web层次设计中,web层-网关层-服务层-数据层,每一层也是一个切。在编程中,对象和对象,方法和方法,模块都是节。
一般我们做活动的时候会检查活动的有效性(是否开始,是否结束等。)以及界面是否需要用户登录。
按照正常的逻辑,我们可以这样做。
有一个问题,就是接口有多少就有多少,需要代码复制。对于一个“懒人”来说,这是不能容忍的。好,提出一个公共方法,每个接口调用这个接口。这里有点切割的味道。
还有一个问题。虽然我不用每次都复制代码,但是每个接口都要调用这个方法。于是就有了切面的概念,我在接口调用的某个地方注入了方法(切点)。
这样接口只需要关注具体的业务,不需要关注接口不关注的其他逻辑或者流程。
红框里,是面授编程。
二、AOP中的相关概念
看了上面的例子,我想你心里已经有了AOP的大概雏形,但是对于上面提到的刻面之类的术语还是有些歧义的。接下来,我们来解释AOP中的相关概念,了解AOP中的概念,从而真正把握AOP的本质。
这里还是先给出一个比较专业的概念定义:
方面:方面声明类似于Java中的类声明。方面包含一些切入点和相应的建议。
接合点:指程序中明确定义的点,通常包括方法调用、对类成员的访问、异常处理块的执行等。它也可以嵌套其他关节点。
切点(切点):表示一组连接点,它们或者通过逻辑关系组合在一起,或者通过通用和正则表达式等聚集在一起。它定义了相应建议的位置。
Advice(增强):Advice定义了切入点中定义的程序点要完成的具体操作。它通过之前、之后和周围来区分在每个关节点之前、之后或代替每个关节点执行的代码。
目标:织入建议的目标对象。
编织:将方面与其他对象连接并创建高级对象的过程。
然后举一个容易理解的例子:
看了上面的理论知识,相信很多朋友还是觉得AOP的概念还是比较模糊的,对AOP中的各种概念的理解也不是很透彻。其实这很正常,因为AOP中的概念太多了,我花了很大力气才整理出来。
让我用一个简单的例子来比较AOP中方面、连接点、切入点和建议之间的关系。
让我们假设从前有一个叫爪哇的小镇。在一个漆黑的夜晚,这个镇上发生了一起谋杀案。凶手非常狡猾,没有在现场留下任何有价值的线索。幸运的是,刚从隔壁回来的老王,恰好在这个时候意外发现了凶手杀人的过程,但由于时间已晚,凶手遮住了脸,老王没有看清凶手的脸。我只知道凶手是男性,大约七英尺五英寸高。根据老王的描述,爪哇国的县令对守卫城门的士兵下了一道命令:凡被发现身高七尺五寸的男子,一律逮捕审问。士兵们当然不敢违抗知府的命令,只好把所有符合条件的进出城市的人都抓起来。
来让我们看一下上面的一个小故事和 AOP 到底有什么对应关系.
首先我们知道,在Spring AOP中,关节点是指所有方法的执行点,而点切是一个描述性的信息,修改关节点。通过点切,我们可以确定哪些关节点可以编织成建议。对应我们上面举的例子,可以做一个简单的类比。关节点相当于爪哇一个小县城里的人,切入点相当于老王提出的指控,凶手是个男性,身高七尺五寸左右,建议是对符合老王描述的嫌疑人施加的行动:逮捕审问。
为什么可以这样类比呢?
关节点:Java小镇上的人:因为根据定义,关节点就是所有可能被编织成建议的候选点。在Spring AOP中,可以认为所有的方法执行点都是关节点。在我们上面的例子中,谋杀案发生在一个小镇上,按理说,这个镇上的每个人都可能是嫌疑人。
切入点:男性,身高七尺五寸左右:我们知道所有的方法(关节点)都可以编织成建议,但是我们不想把建议编织成所有的方法,切入点的作用就是提供一套规则来匹配关节点。给符合规则的joinpoint添加建议。同样,对于县令来说,再昏庸也知道不能把全县的人都抓起来审问。而是根据凶手是男性的事实逮捕符合条件的人,七尺五寸左右的身高是修饰谓语,限制了凶手的范围。符合这个修改后的规则的人都是嫌疑人,需要逮捕。
Advice: Catch and interrogate,Advice是一个动作,也就是一段Java代码,作用于那些由point cut定义的关节点。同样,与我们的例子相比,抓捕和审讯的动作是作用于爪哇小镇上的人,这些人是男性,大约七英尺五英寸高。
Aspect: Aspect是点切和劝告的结合,所以这里可以打个比方:“根据老王的线索,凡是被发现身高七尺五寸的男人,都要抓起来审问。”这整个动作可以算是一个方面。
最后,用图表描述这些概念之间的关系:
三、其他的一些内容
AOP中的Joinpoint可以有很多种类型:构造方法调用、字段设置和获取、方法调用、方法执行、异常处理和执行、类初始化。也就是说,在AOP的概念中,我们可以在上面的连接点上编织自己的自定义建议,但是上面的连接点都没有在Spring中实现。确切地说,Spring只支持方法执行类型的连接点。
Advice 的类型
在通知之前,在连接点之前执行通知。虽然before advice是在join point之前执行的,但是除非发生异常,否则它无法停止join point的执行(也就是我们无法人为决定是否继续执行join point中的代码)。
在返回通知之后,在连接点正常返回之后执行的通知。
抛出建议后,当连接点抛出异常时执行的建议。
在(最终)通知之后,将执行连接点是正常退出还是出现异常。
在通知前后,在连接点退出前后执行的通知。这是最常用的建议。
引入,引入可以给原有的对象添加新的属性和方法。这就是Spring——AOP (AOP概述)的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。