本文介绍了如何分析Spring AOP的设计和原理。内容非常详细,有兴趣的朋友可以参考一下,希望对你有帮助。
Java程序执行——方法调用
从java的基础知识中我们知道,java程序总是从主方法开始运行。当它开始运行时,JVM会创建一个主线程,主线程会以main方法为入口开始执行代码。从线程栈的角度来看,JVM处理Java程序的基本单元是方法调用(宏观视图)。当我们使用面向对象解决问题时,我们考虑如何根据执行顺序通过方法调用来实现我们的业务逻辑。如果从虚拟机线程栈的角度考虑Java程序执行,那么你会发现程序运行的整个过程就是方法调用的过程。
连接点
我们把上面的方法调用按照执行流程排列在线程栈中,会出现类似下图的图:
根据程序运行的顺序,我们可以将方法调用排成一行。每个方法调用都可以被视为这条线上的一个节点。在AOP术语中,这个节点被称为连接点,即连接点。一个Java程序的运行过程就是几个连接点依次连接并执行的过程。
00-1010 AOP(面向方面编程)从另一个角度考虑整个程序。AOP把每一个方法调用,也就是连接点作为编程的入口,并为方法调用编程。从逻辑上讲,执行相当于之前按照时间轴垂直执行的程序的水平切入。相当于把之前的程序水平切割成几个方面,也就是Aspect。每个小平面称为一个切平面。
因为方面本质上是每个方法调用,选择方面的过程实际上就是选择方法的过程。然后,选定的方面在AOP术语中称为点切割。连接点切割实际上是从所有连接点中选择您感兴趣的连接点的过程。
00-1010既然AOP程序有方法调用,问题就来了。AOP如何捕获方法调用?也就是说,AOP如何知道当前运行的是哪种方法?为了找出这个问题,你必须了解设计模式中的代理模式!什么是代理模式?例子:真正的例子对象是迪丽热巴第一。迪丽热巴被要求在没有火的时候去跳舞,她自己去,相当于之前没有经纪人对象的时候。现在有了代理对象就意味着她有了代理。如果迪丽热巴想跳舞,她必须先联系经纪人。我们假设在我们的Java代码中,代理对象是通过代理模式为实例对象创建的,对这些实例对象的访问必须通过代理,所以带有代理对象(代理角色)的Java程序执行流程会变得稍微复杂一些。
由于Spring的代理层可以检测您对实例对象进行的每个方法调用,因此Spring有机会在这个代理的过程中插入Spring自己的业务代码。
这里将分享如何分析Spring AOP的设计和原理。希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/132967.html