`
hl756799782
  • 浏览: 74340 次
  • 性别: 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实验

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

    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 切入点表达式 ...

    spring_aop.rar

    Spring-Aop 一、Aop的概述 1.1、什么是Aop(摘自百度) 1.2、Aop的相关术语 二、基于XML的AOP配置 三、基于注解的AOP配置

    Spring5_AOP.pdf

    从Spring5-AOP的概念->底层原理->相关术语->AOP操作(AspectJ注解)->AOP操作(AspectJ配置文件)说明AOP的相关笔记

    Spring AOP中文教程

    Spring framework是很有前途的AOP技术。作为一种非侵略性的,轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是象...

    Spring AOP 原理剖析,这一篇就够

    Spring AOP 学习记录 AOP(面向切面编程)方面的知识又是看了忘忘了看,今天有空记录下AOP的知识点。主要分为以下几方面: ​ 1、AOP相关术语 ​ 2、基础知识及示例 ​ 3、增强分类 1、AOP相关术语 连接点...

    Java八股文-Spring AOP

    java八股文,详细介绍啦springAOPAOP术语 连接点(Joinpoint) 连接点是在应用执行过程中能够插入切面(Aspect)的一个点。这些 点可以是调用方法时、甚至修改一个字段时。 切点(PointCut)指通知(Advice)所要织入...

    spring_教程_2_AOP

    简介AOP知识,包括概念,了解AOP 撑握理解AOP术语 理解Spring中AOP的实现 撑握通知、切入点的定义与使用 撑握ProxyFactoryBean的使用 撑握Spring自动代理的使用

    Spring的学习笔记

    第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) AspectJ的专业术语 23 (五) 织入点语法 23 (六) Advice 24 ...

    Spring笔记(面试题)md

    1.什么是Spring框架 2.Spring的特点 3.什么是IOC ...13.AOP常用的术语 14.什么是AspectJ框架 15.AspectJ常见通知类型 16.AspectJ 的切入点表达式(掌握) 17.AspectJ的前置通知@Before .... .... ....

    开源框架 Spring Gossip

    <br>AOP 入门 AOP 的观念与术语都不是很直觉,可以先从代理机制(Spring 实现 AOP 的一种方式)来看看实际的例子,从而了解 AOP 的观念与各种术语。 从代理机制初探 AOP 动态代理 <br>AOP 观念与...

    Spring框架知识点(二)

    1.spring的bean管理(注解) (1)使用注解创建对象 (2)使用注解注入属性 (3)Xml和注解方式混合使用 ...(3)Aop操作相关术语 3.spring的aop操作(基于aspectj的xml方式) 4.Log4j介绍 5.Spring整合web项目演示

    spring in action英文版

     3.1.1 定义AOP术语  3.1.2 Spring的AOP实现  3.2 创建通知  3.2.1 前置通知  3.2.2 后置通知  3.2.3 环绕通知  3.2.4 异常通知  3.2.5 引入通知  3.3 定义切入点  3.3.1 在Spring中...

    Spring.3.x企业应用开发实战(完整版).part2

    6.1.2 AOP术语 6.1.3 AOP的实现者 6.2 基础知识 6.2.1 带有横切逻辑的实例 6.2.2 JDK动态代理 6.2.3 CGLib动态代理 6.2.4 AOP联盟 6.2.5 代理知识小结 6.3 创建增强类 6.3.1 增强类型 6.3.2 前置增强 6.3.3 后置增强...

    spring2.5 学习笔记

    第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) AspectJ的专业术语 23 (五) 织入点语法 23 (六) Advice 24 ...

    Spring.html

    专业术语 目标Target:需要增强的类 连接点JoinPoint:目标中可被增强的方法 切入点PointCut:被增强的方法 增强Advice:增强代码 切面Aspect:切点加通知 织入weaving:讲切面加载进内存形成代理对象的过程 ...

    Spring in Action(第2版)中文版

    4.1.1定义aop术语 4.1.2spring对aop的支持 4.2创建典型的spring切面 4.2.1创建通知 4.2.2定义切点和通知者 4.2.3使用proxyfactorybean 4.3自动代理 4.3.1为spring切面创建自动代理 4.3.2自动代理@aspectj切...

    Spring in Action(第二版 中文高清版).part2

    4.1.1 定义AOP术语 4.1.2 Spring对AOP的支持 4.2 创建典型的Spring切面 4.2.1 创建通知 4.2.2 定义切点和通知者 4.2.3 使用ProxyFactoryBean 4.3 自动代理 4.3.1 为Spring切面创建自动代理 4.3.2 自动代理...

Global site tag (gtag.js) - Google Analytics