`
hl756799782
  • 浏览: 77772 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring AOP术语介绍(转载)

阅读更多

原文链接:http://blog.sina.com.cn/s/blog_3ff3946a01009k5z.html

 

AOP全名为Aspect-Oriented Programming,有关于AOP的许多名词术语都过于抽象,单从字面上并不容易理解其名词意义,这边将以之前介绍代理机制的范例来逐一对照以介绍AOP的术语与观念:

    * Cross-cutting concern

在DynamicProxyDemo专案的例子中,记录的动作原先被横切(Cross-cutting)入至HelloSpeaker本身所负责的商务流程之中,另外类似于日志这类的动作,如安全(Security)检查、交易(Transaction)等系统层面的服务(Service),在一些应用程式之中常被见到安插至各个物件的处理流程之中,这些动作在AOP的术语中被称之为Cross-cutting concerns。

以图片说明可强调出Cross-cutting concerns的意涵,例如原来的商务流程是很单纯的:

 

Cross-cutting concerns若直接撰写在负责某商务的物件之流程中,会使得维护程式的成本增高,例如若您今天要将物件中的记录功能修改或是移除该服务,则必须修改所有撰写曾记录服务的程式码,然后重新编译,另一方面,Cross-cutting concerns混杂于商务逻辑之中,使得商务物件本身的逻辑或程式的撰写更为复杂。

现在为了要加入日志(Logging)与安全(Security)检查等服务,物件的程式码中若被硬生生的写入相关的Logging、Security程式片段,则可使用以下图解表示出Cross-cutting与Cross-cutting concerns的概念:

 

* Aspect

将散落于各个商务物件之中的Cross-cutting concerns收集起来,设计各个独立可重用的物件,这些物件称之为Aspect,例如在动态代理中将日志的动作设计为一个LogHandler类别,LogHandler类别在AOP的术语就是Aspect的一个具体实例,在AOP中着重于 Aspect的辨认,将之从商务流程中独立出来,在需要该服务的时候,缝合(Weave)至应用程式之上,不需要服务的时候,也可以马上从应用程式中脱离,应用程式中的可重用元件不用作任何的修改,例如在动态代理中的HelloSpeaker所代表的角色就是应用程式中可重用的元件,在它需要日志服务时并不用修改本身的程式码。

另一方面,对于应用程式中可重用的元件来说,以AOP的设计方式,它不用知道处理提供服务的物件之存在,具体的说,与服务相关的API不会出现在可重用的应用程式元件之中,因而可提高这些元件的重用性,您可以将这些元件应用至其它的应用程式之中,而不会因为目前加入了某些服务而与目前的应用程式框架发生耦合。

    * Advice

Aspect的具体实作称之为Advice,以日志的动作而言,Advice中会包括真正的日志程式码是如何实作的,像是动态代理中的LogHandler类别就是Advice的一个具体实例,Advice中包括了Cross-cutting concerns的行为或所要提供的服务。

    *  Joinpoint

Aspect在应用程式执行时加入商务流程的点或时机称之为Joinpoint,具体来说,就是Advice在应用程式中被呼叫执行的时机,这个时机可能是某个方法被呼叫之前或之后(或两者都有),或是某个例外发生的时候。

    * Pointcut

Pointcut是一个定义,藉由这个定义您可以指定某个Aspect在哪些Joinpoint时被应用至应用程式之上。具体的说,您可以在某个定义档中撰写Pointcut,当中说明了哪些Aspect要应用至应用程式中的哪些Joinpoint。

    * Target

一个Advice被应用的对象或目标物件,例如动态代理中的HelloSpeaker就是LogHandler这个Advice的Target。

    * Introduction

对于一个现存的类别,Introduction可以为其增加行为,而不用修改该类别的程式,具体的说,您可以为某个已撰写、编译完成的类别,在执行时期动态加入一些方法或行为,而不用修改或新增任何一行程式码。

    * Proxy

在《Expert One-on-One J2EE Development WIthout EJB》一书中,Rod Johnson、Juergen Hoeller在第八章中有提到,AOP的实作有五个主要的策略: Dynamic Proxies、Dynamic Byte Code Generation、Java Code Generation、Use of a Custon Class Loader、Language Extensions。

在之前 从代理机制初探 AOP 与 动态代理中,已经使用实际的程式范例介绍过代理机制的实现,Spring的AOP主要是透过动态代理来完成。

    * Weave

Advice被应用至物件之上的过程称之为缝合(Weave),在AOP中缝合的方式有几个时间点:编译时期(Compile time)、类别载入时期(Classload time)、执行时期(Runtime)。

结合 动态代理的实例,将以上介绍过的AOP相关名词具体的使用图片来加以表示,有助于您对每一个名词的理解与认识:

 

特别说明:本人转载文章纯为技术学习,总结经验,并无其他目的,若有他人继续转载,请链接原作者的地址,而不是本文的地址,以示对作者的尊重。最后对原作者的辛勤劳动表示感谢!

分享到:
评论

相关推荐

    Spring aop术语详解

    Spring AOP 术语详解 Spring 中的 AOP 术语可能会使人感到困惑,但本文将对 AOP 术语进行通俗的解释。 关注点(Concern) 关注点是我们要考察或解决的问题。如订单的处理、用户的验证、用户日志记录等都属于关注...

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    在讨论Spring AOP(面向切面编程)时,首先需要理解几个核心概念。Spring AOP 是Spring框架提供的一个功能模块,它允许开发者将横切关注点(cross-cutting concerns)从业务逻辑中解耦出来,通过在方法调用前后进行...

    第3章 Spring AOP.ppt

    【AOP 术语解析】 1. **Aspect(切面)**:切面是封装了横切关注点的类,比如事务管理、日志记录等。它结合了多个通知(Advice)和切入点(Pointcut)。 2. **Joinpoint(连接点)**:程序执行过程中的特定点,比如...

    基于java的企业级应用开发:Spring AOP简介.ppt

    **AOP术语详解** 1. **Aspect**:切面是AOP的核心概念,它封装了特定的横切关注点,例如事务管理和日志记录。一个切面可以包含多个通知(Advice)和切点(Pointcut)。 2. **Joinpoint**:连接点是指程序执行过程...

    Spring 2.5 AOP 例子

    四、AOP术语 - 切面(Aspect):定义一组相关或相互关联的通知和切点的模块化组件。 - 通知(Advice):在特定连接点执行的代码,例如日志记录、事务管理等。 - 切点(Pointcut):定义在何处应用通知的规则。可以是...

    Spring AOP实验

    2、理解AOP中的相关术语; 3、了解Spring中两种动态代理方式的区别; 4、掌握基于XML和注解的AspectJ开发。 二、 实验内容 1、按图所示的类图结构,设计接口及其实现类,并完成另外两附加要求:(1)日志功能:在...

    springAOP.docx

    本文将深入探讨Spring AOP的XML版本,包括如何配置、相关术语以及如何实现不同的通知类型。 首先,要启用Spring AOP的功能,我们需要在Maven项目的pom.xml文件中引入必要的依赖。如描述所示,至少需要`spring-...

    Spring AOP 工程样例

    **AOP术语** 1. **切面(Aspect)**:切面是关注点的模块化,包含了通知和切入点定义。 2. **通知(Advice)**:通知是在特定连接点上执行的动作,如方法调用前、后或异常发生时。 3. **连接点(Join Point)**:...

    spring2-aop.pdf

    - **Spring AOP 配置方法**:详细介绍使用 XML 和注解两种方式进行配置的方法。 - **切入点 (Pointcut)**:定义切面应该应用于哪些连接点的规则。 - **增强 (Advice)**:描述在指定连接点发生时应执行的操作。 - **...

    Springframework核心技术AOP详细介绍文档.pdf

    要深入理解AOP,开发者需要熟悉上述的概念和术语。在实践中,开发者可以通过阅读Spring AOP和AspectJ的官方文档、参考示例项目、参与社区讨论等方式来进一步提升自己的理解。通过实际的编码实践和问题解决,开发者...

    Spring5_AOP.pdf

    在AOP术语中,连接点通常指那些可以被增强操作的位置。 切入点(Pointcut)是匹配连接点的表达式。通过切入点,可以定义在哪些具体的连接点上应用通知,它是AOP中用于定义何时以及在哪里执行通知的模块。切入点的...

    Spring AOP入门及其实例讲解、下载

    本文将深入探讨Spring AOP的基本概念、核心术语以及如何通过实例来应用它。 ### 1. Spring AOP 概念 - **切面(Aspect)**: 切面是关注点的一个模块化,它包含了横切关注点的定义。在Spring中,切面可以是独立的类...

    spring aop

    二、AOP术语解析 1. 切面(Aspect):切面是关注点的模块化,它可以包含多个通知(advice)。 2. 通知(Advice):通知定义了切面的具体行为,即在特定连接点(join point)上执行的代码。 3. 连接点(Join Point)...

    SpringAOP例子

    《SpringAOP实战示例——基于Spring in action 2ed chapter4》 Spring AOP(面向切面编程)是Spring框架的重要组成部分,它允许我们通过分离关注点来编写更整洁、可维护的代码。在"Spring in action 2nd edition"的...

    spring AOP拦截方法小示例

    在Spring AOP中,有五个关键术语: 1. **连接点(Join Point)**:程序执行的特定点,如方法的调用。 2. **切点(Pointcut)**:匹配一组连接点的规则。例如,我们可能想要匹配所有Service层的方法。 3. **通知...

    介绍spring AOP

    2. **切点(Pointcut)**:是AOP术语,用于指定哪些连接点(join point)将应用切面的通知。连接点是指程序执行过程中的某一点,如方法调用、异常抛出等。 3. **通知(Advice)**:是在切点上执行的动作,可以在...

    Spring AOP切面编程简介

    - Spring AOP的基本概念和术语。 - 如何创建切面、定义通知以及切入点表达式。 - 掌握JDK动态代理和CGLIB的工作原理。 - 熟悉@Aspect、@Before、@After、@Around等注解的使用。 - 学习如何在Spring配置文件中配置AOP...

    一步一步手绘spring AOP时序图.rar

    AOP的概念主要包括以下几个核心术语: 1. 切面(Aspect):切面是AOP的核心,它封装了系统的横切关注点,可以包含通知(advice)和切入点(pointcut)。 2. 通知(Advice):通知是在特定的连接点(join point)...

    SpringBoot下的SpringAOP-day04-源代码

    2.1 AOP介绍 2.2 AOP中专业术语(难点) 2.3 AOP 入门案例 2.3.1 创建一个SpringBoot的module 2.3.1 导入jar包 2.3.2 项目工程结构 2.3.3 配置类 2.3.4 Service层 2.3.4.1 接口 2.3.4.2 实现类 2.3.5 切入点表达式 ...

Global site tag (gtag.js) - Google Analytics