如何分析Spring AOP设计与原理

技术如何分析Spring AOP设计与原理这篇文章给大家介绍如何分析Spring AOP设计与原理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。java程序执行——方法调用在学java基础我们就知道

本文介绍了如何分析Spring AOP的设计和原理。内容非常详细,有兴趣的朋友可以参考一下,希望对你有帮助。

Java程序执行——方法调用

从java的基础知识中我们知道,java程序总是从主方法开始运行。当它开始运行时,JVM会创建一个主线程,主线程会以main方法为入口开始执行代码。从线程栈的角度来看,JVM处理Java程序的基本单元是方法调用(宏观视图)。当我们使用面向对象解决问题时,我们考虑如何根据执行顺序通过方法调用来实现我们的业务逻辑。如果从虚拟机线程栈的角度考虑Java程序执行,那么你会发现程序运行的整个过程就是方法调用的过程。

连接点

我们把上面的方法调用按照执行流程排列在线程栈中,会出现类似下图的图:

如何分析Spring  AOP设计与原理

根据程序运行的顺序,我们可以将方法调用排成一行。每个方法调用都可以被视为这条线上的一个节点。在AOP术语中,这个节点被称为连接点,即连接点。一个Java程序的运行过程就是几个连接点依次连接并执行的过程。

00-1010 AOP(面向方面编程)从另一个角度考虑整个程序。AOP把每一个方法调用,也就是连接点作为编程的入口,并为方法调用编程。从逻辑上讲,执行相当于之前按照时间轴垂直执行的程序的水平切入。相当于把之前的程序水平切割成几个方面,也就是Aspect。每个小平面称为一个切平面。

如何分析Spring  AOP设计与原理

如何分析Spring  AOP设计与原理

因为方面本质上是每个方法调用,选择方面的过程实际上就是选择方法的过程。然后,选定的方面在AOP术语中称为点切割。连接点切割实际上是从所有连接点中选择您感兴趣的连接点的过程。

如何分析Spring  AOP设计与原理

00-1010既然AOP程序有方法调用,问题就来了。AOP如何捕获方法调用?也就是说,AOP如何知道当前运行的是哪种方法?为了找出这个问题,你必须了解设计模式中的代理模式!什么是代理模式?例子:真正的例子对象是迪丽热巴第一。迪丽热巴被要求在没有火的时候去跳舞,她自己去,相当于之前没有经纪人对象的时候。现在有了代理对象就意味着她有了代理。如果迪丽热巴想跳舞,她必须先联系经纪人。我们假设在我们的Java代码中,代理对象是通过代理模式为实例对象创建的,对这些实例对象的访问必须通过代理,所以带有代理对象(代理角色)的Java程序执行流程会变得稍微复杂一些。

如何分析Spring  AOP设计与原理

由于Spring的代理层可以检测您对实例对象进行的每个方法调用,因此Spring有机会在这个代理的过程中插入Spring自己的业务代码。

这里将分享如何分析Spring AOP的设计和原理。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/132967.html

(0)

相关推荐

  • 如何进行MySQL索引条件下推的简单测试

    技术如何进行MySQL索引条件下推的简单测试本篇文章给大家分享的是有关如何进行MySQL索引条件下推的简单测试,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

    攻略 2021年11月16日
  • Tcp协议的连接

    技术Tcp协议的连接 Tcp协议的连接Tcp协议是面向连接的协议,因为它具有握手过程
    Tcp连接是成对出现的,是点对点的三次握手客户端和服务器端通信的时候,主要发生下面三个过程
    1.客户端给服务器发送一

    礼包 2021年11月27日
  • 内存

    技术内存 内存一、物理内存和虚拟内存
    1、虚拟内存每个程序都有4G虚拟内存,相当于空头支票
    只有真正要用的时候,才会在物理内存中给你分配一块物理内存
    4kb页式管理,一页是4kb大小(物理页)2、虚拟内

    礼包 2021年12月24日
  • PLSQL Developer试用期到了怎么办

    技术PLSQL Developer试用期到了怎么办这篇文章给大家分享的是有关PLSQL Developer试用期到了怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PLSQL Develo

    攻略 2021年11月24日
  • 枚举类型

    技术枚举类型 枚举类型枚举类型
    枚举类型可以取代以往常量的定义,即将常量封装在类或接口中
    定义
    public enum Constants{Constants_A,Constants_B,
    }enum是

    礼包 2021年12月13日
  • mysql如何解决幻读(mysql2003错误如何解决)

    技术mysql 5.7如何解决忘记密码问题小编给大家分享一下mysql 5.7如何解决忘记密码问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! mysql5.7忘记密码的解

    攻略 2021年12月16日