关于Spring中AOP的理解

简介:

AOP简介【理解】【重点】

1.AOP(Aspect Oriented Programing)面向切面/方面编程

       2.AOP隶属软件工程的范畴,指导开发人员如何制作开发软件,进行结构设计

       3.AOP联盟:掌握着AOP的发展方向

       4.AOP开发只关注共性功能

       5.主思想:在不惊动原始设计的基础之上,为原始设计追加功能

              *插拔式组件体系结构

              *OOP与AOP区别

                     OOP开发,关注的是层与层之间的关系,及其每层中各个实现类如何制作

                     AOP开发,关注的是共性功能,无论该共性功能是否服务于同一层面的类

                     将共性功能抽取出来,制作成独立的模块,在程序运行时,动态的为其追加该功能

       6.AOP核心思想

AOP关注的是程序中的共性功能,开发时,将共性功能抽取出来制作成独立的功能模块,此时原始功能中将不具有这些被抽取出的共性功能代码。在当时具有被抽取的共性功能的模块运行时候,将共性功能,模块进行运行,即可完成原始的功能。

       优点:加强代码的复用性,同时程序开发时可以只考虑个性化的功能,不需要考虑共性功能

l  连接点(Joinpoint):类中的任意方法的运行时表示,可以简单理解为类中的方法

l  切入点(Pointcut) :具有共性功能的方法的运行时表示,可以简单理解为具有共性功能的方法

注意:切入点对应的是被挖去了共性功能后的方法执行时匹配断言(格式)

l  通知(Advice) :共性功能模块化,可以简单理解为将共性功能抽取出来制作成独立的方法

l  切面(Aspect) :切入点与通知的对应关系,可以简单理解为被抽取的共性功能与共性功能被抽取位置对应的方法之间的关系

l  目标对象(Target Object) :包含切入点的运行时对象,开发阶段制作的是目标对象对应的类

l  AOP代理(AOP Proxy) :使用AOP的代理机制创建目标对象运行时代理对象,完成原始的功能

注意:原始目标对象已经被挖去了共性功能,此时使用目标对象执行任务无法完成原始任务,使用AOP代理机制,创建一个代理对象来完成原始目标对象的功能

l  织入(Weaving) :是一个将通知功能加入原始字节码的动态过程,共有三种方式,Spring使用的是运行时织入机制

l  【了解】引入(Introduction) :一种特殊的机制,可以为一个类的字节码动态的加入变量或方法

AOP工作流程:

开发时,制作功能类(目标对象类),将其中方法的通用功能(通知)抽取出来,制作成独立的类(通知类),原始目标对象中的方法(切入点)不再书写通用功能。通用功能被抽取后,原始目标对象无法完成完整的业务逻辑,需要在运行时将通知加入到对应的位置执行。为了完成此操作,必须将切入点与通知进行一对一的对应关系设定(切面)。

AOP运行流程:

运行时,Spring监控切面中所配置切入点对应方法的执行,发现执行了匹配的方法,使用AOP代理机制,创建代理对象(AOP代理),将原始方法(切入点)与通知进行融合,形成完整的业务逻辑并进行运行,此过程称为织入。

 

AOP的配置可以通过XML和注解的方式来实现....见后边的博文(每种方式单独写)


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4091005.html,如需转载请自行联系原作者

相关文章
|
1月前
|
监控 Java API
掌握 Spring Boot AOP:使用教程
Spring Boot 中的面向切面编程(AOP)为软件开发提供了一种创新方法,允许开发者将横切关注点与业务逻辑相分离。这不仅提高了代码的复用性和可维护性,而且还降低了程序内部组件之间的耦合度。下面,我们深入探讨如何在 Spring Boot 应用程序中实践 AOP,以及它为项目带来的种种益处。
|
1月前
|
安全 Java Spring
Spring之Aop的底层原理
Spring之Aop的底层原理
|
8天前
|
运维 Java 程序员
Spring5深入浅出篇:基于注解实现的AOP
# Spring5 AOP 深入理解:注解实现 本文介绍了基于注解的AOP编程步骤,包括原始对象、额外功能、切点和组装切面。步骤1-3旨在构建切面,与传统AOP相似。示例代码展示了如何使用`@Around`定义切面和执行逻辑。配置中,通过`@Aspect`和`@Around`注解定义切点,并在Spring配置中启用AOP自动代理。 进一步讨论了切点复用,避免重复代码以提高代码维护性。通过`@Pointcut`定义通用切点表达式,然后在多个通知中引用。此外,解释了AOP底层实现的两种动态代理方式:JDK动态代理和Cglib字节码增强,默认使用JDK,可通过配置切换到Cglib
|
2天前
|
XML Java 数据格式
Spring高手之路18——从XML配置角度理解Spring AOP
本文是全面解析面向切面编程的实践指南。通过深入讲解切面、连接点、通知等关键概念,以及通过XML配置实现Spring AOP的步骤。
21 6
Spring高手之路18——从XML配置角度理解Spring AOP
|
8天前
|
XML Java 数据格式
Spring使用AOP 的其他方式
Spring使用AOP 的其他方式
16 2
|
8天前
|
XML Java 数据格式
Spring 项目如何使用AOP
Spring 项目如何使用AOP
22 2
|
13天前
|
Java 开发者 Spring
Spring AOP的切点是通过使用AspectJ的切点表达式语言来定义的。
【5月更文挑战第1天】Spring AOP的切点是通过使用AspectJ的切点表达式语言来定义的。
25 5
|
13天前
|
XML Java 数据格式
Spring AOP
【5月更文挑战第1天】Spring AOP
27 5
|
14天前
|
Java 编译器 开发者
Spring的AOP理解
Spring的AOP理解
|
14天前
|
XML Java 数据格式
如何在Spring AOP中定义和应用通知?
【4月更文挑战第30天】如何在Spring AOP中定义和应用通知?
17 0