AspectJ程序设计指南

AspectJ程序设计指南

ID:28740193

大小:436.00 KB

页数:40页

时间:2018-12-13

AspectJ程序设计指南_第1页
AspectJ程序设计指南_第2页
AspectJ程序设计指南_第3页
AspectJ程序设计指南_第4页
AspectJ程序设计指南_第5页
资源描述:

《AspectJ程序设计指南》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、AspectJ程序设计指南许多软件开发人员被面向方面编程技术(AOP)深深的吸引,但是苦于不知到如何使用这项技术。他们知道横切关注点(Crosscuttingconcerns)的概念,而且也确实遇到了这方面的问题。但是问题是如何将AOP引入开发的过程中呢?通常会出现下面的问题:·能在现有代码上使用方面(aspect)吗?·使用了方面后能获得怎样的好处呢?·怎样在程序中找到方面?·AOP的学习曲线是怎样的呢?·使用这项新技术的风险是什么?本文将重点讨论在AspectJ环境下这些问题的答案。AspectJ是对于Java语言的面向方面的扩展。本文将针对A

2、spectJ介绍一些基本概念并以代码片段的形式说明这些概念(声明一点,这些概念的中文命名十分奇怪,不具代表性,所以建议使用英文名表示)。当然选取新技术存在很大的风险,因为通常新东西发展特别快,指不定那天完全变了。出于这个考虑许多的公司都对新技术十分保守。还好,方面可以用在开发的不同阶段,而且可以在毫不改变原有代码的情况下实行,所以如果觉得它不怎么的,可以很轻松的去除它的影响。开发阶段的方面可用于程序的调式,单元测试以及性能监测;而在产品阶段的方面完全可以实现通常在Java应用中的横切功能;当然还可以设计开发可重用的方面,很不错哦!那些有所顾虑的人们

3、完全可以只使用开发阶段的方面,它对一减轻原来很烦琐的重复操作,例如调式时的代码执行情况的追踪。 AspectJ简介这一部分我将简单介绍AspectJ中的一些基本的概念,如果熟悉它们的读者可以跳过不看本文使用例子的形式说明概念,这样有助于大家的理解,本文使用简单的图形编辑系统的例子(采用了AspectJ附带文档中的例子),其UML图如下图1:FigureEditor例子的UML图AspectJ(也就是AOP)的动机是发现那些使用传统的编程方法无法很好处理的问题。考虑一个要在某些应用中实施安全策略的问题。安全性是贯穿于系统所有模块间的问题,每个模块都需

4、要应用安全机制才能保证整个系统的安全性,很明显这里的安全策略的实施问题就是一个横切关注点,使用传统的编程解决此问题非常的困难而且容易产生差错,这就正是AOP发挥作用的时候了。传统的面向对象编程中,每个单元就是一个类,而类似于安全性这方面的问题,它们通常不能集中在一个类中处理因为它们横跨多个类,这就导致了代码无法重用,可维护性差而且产生了大量代码冗余,这是我们不愿意看到的。面向方面编程的出现正好给处于黑暗中的我们带来了光明,它针对于这些横切关注点进行处理,就好象面向对象编程处理一般的关注点一样。而作为AOP的具体实现之一的AspectJ,它向Java

5、中加入了连接点(JoinPoint)这个新概念,其实它也只是现存的一个Java概念的名称而已。它向Java语言中加入少许新结构:切点(pointcut)、通知(Advice)、类型间声明(Inter-typedeclaration)和方面(Aspect)。切点和通知动态地影响程序流程,类型间声明则是静态的影响程序的类等级结构,而方面则是对所有这些新结构的封装。一个连接点是程序流中指定的一点。切点收集特定的连接点集合和在这些点中的值。一个通知是当一个连接点到达时执行的代码,这些都是AspectJ的动态部分。其实连接点就好比是程序中的一条一条的语句,而

6、切点就是特定一条语句处设置的一个断点,它收集了断点处程序栈的信息,而通知就是在这个断点前后想要加入的程序代码。AspectJ中也有许多不同种类的类型间声明,这就允许程序员修改程序的静态结构、名称、类的成员以及类之间的关系。AspectJ中的方面是横切关注点的模块单元。它们的行为与Java语言中的类很象,但是方面还封装了切点、通知以及类型间声明。动态连接点模型任何面向方面编程的关键元素就是连接点模型。AspectJ提供了许多种类的连接点集合,但是本篇只介绍它们中的一个:方法调用连接点集(methodcalljoinpoints)。一个方法调用连接点捕

7、捉对象的方法调用。每一个运行时方法调用都是一个不同的连接点,许多其他的连接点集合可能在方法调用连接点执行时运,包括方法执行时的所有连接点集合以及在方法中其他方法的调用。我们说这些连接点集合在原来调用的连接点的动态环境中执行。 切点在AspectJ中,切点捕捉程序流中特定的连接点集合。例如,切点call(voidPoint.setX(int))捕捉每一个签名为voidPoint.setX(int)的方法调用的连接点,也就是说,调用Point对象的有一个整型参数的voidsetX方法。切点能与其他切点通过或(

8、

9、)、与(&&)以及非(!)操作符联合。例

10、如call(voidPoint.setX(int))

11、

12、call(voidPoint.setY(int))捕捉setX或s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。