系统服务,则可以借助于AOP编程方法,借助AOP框架,通过切面模块来封装各种系统级 服务模块,结合一些轻量级的容器应用,从而使得普通POJO业务组件也能享受声明式的系 统服务。相对于」EE应用服务器提供的几种固定的系统级服务来说,使用AOP方法可以 自由定义、实现自己的系统级服务,因此变得更加灵活。比如, Spring中的声明式事务支持 JBoss中的缓存等都是使用AOP来实现的 另外,如同前面分析的,在我们的系统中,除了一些系统级服务属于横切关注点问题以 外,一些核心关注点外围的需求也会具有横切性质,因此还可以通过在程序中使用AOP来 解决些具有横切性质的需求,使得系统设计更加容易、程序代码更加简洁、更加易于维护及 扩展。 52 Aspect简介及快速入门 Aspect是一个基于Java语言扩展的AOP实现,被业界誉为AOP的急先锋,其提供了 强大的AOP功能,其他很多AOP实现都借鉴或采纳其中的一些思想。学习使用 Aspect不 但让我们可以直接在项目中使用他来解决横切关注点的问题,还可以通过他加深对AOP编 程方法的认识及理解,由于 Spring2中的AOP与 Aspect进行了很好的集成,因此也为我们 学习使用 Spring2中的AOP打下基础 521 AspectJ介绍 Aspect是Java语言的一个AOP实现,其主要包括两个部分,第一个部分定义了一套 如何表达、定义面向切面(AOP)编程中的相关概念(如连接点、切入点、增强、切面等)的 语法规范。通过这套语言规范,我们可以方便地用AOP来解决java语言中存在的交叉关注 点问题。 AspectJ的另外一个部分是工具部分,包括编译器、调试程序的工具以及为了更方 便开发基于AOP应用而设计的开发集成工具等 AspectJ是最早、功能比较强大的AOP实现之一,是为数不多的比较完整的AOP的实 现,在AOP领域基本上充当着行业领头羊的角色,被誉为AOP领域的急先锋。 AspectJ的 功能比较强大,从连接点、切入点、通知、引介到切面定义都有一套比较完整的机制,很多 其它语言的AOP实现,也借鉴或采纳了 AspectJ中很多设计。在Java领域, AspectJ中的很 多语法结构基本上成了AOP领域的标准,比如:在 Spring2.0中,AOP部分就作了比较大 的调整,不但引入了对 Aspect的支持,其自己的AOP核心部分的很多使用方法、定义乃 至表示等都力求保持与 AspectJ一致。因此,要学习使用AOP,我们有必要从 Aspect开始, 因为他本身就是java语言AOP解决方案,就算不用 Spring,也可以独立地用于我们的Java 应用程序中。 Aspect是 Eclipse下面的一个开源项目,当前发布的版本是 AspcetJ5。 522 AspectJ的下载及安装 AspectJ的官方网址是:htp/ vww.eclipse. org/ aspecty/ 要使用 Aspect,首先需要下载并安装 Aspect。直接进入其官网站,点击【 downloads】 栏目,在下载页面中选择 AspectJ的一个版本,一般选择【 Latest stable release】,然后点击 后面 aspect- xxx.Jar连接,即可进入下载页面,如“图5-3”所示
系统服务,则可以借助于 AOP 编程方法,借助 AOP 框架,通过切面模块来封装各种系统级 服务模块,结合一些轻量级的容器应用,从而使得普通 POJO 业务组件也能享受声明式的系 统服务。相对于 J2EE 应用服务器提供的几种固定的系统级服务来说,使用 AOP 方法可以 自由定义、实现自己的系统级服务,因此变得更加灵活。比如,Spring 中的声明式事务支持、 JBoss 中的缓存等都是使用 AOP 来实现的。 另外,如同前面分析的,在我们的系统中,除了一些系统级服务属于横切关注点问题以 外,一些核心关注点外围的需求也会具有横切性质,因此还可以通过在程序中使用 AOP 来 解决些具有横切性质的需求,使得系统设计更加容易、程序代码更加简洁、更加易于维护及 扩展。 5.2 AspectJ 简介及快速入门 AspectJ 是一个基于 Java 语言扩展的 AOP 实现,被业界誉为 AOP 的急先锋,其提供了 强大的 AOP 功能,其他很多 AOP 实现都借鉴或采纳其中的一些思想。学习使用 AspectJ 不 但让我们可以直接在项目中使用他来解决横切关注点的问题,还可以通过他加深对 AOP 编 程方法的认识及理解,由于 Spring2 中的 AOP 与 AspectJ 进行了很好的集成,因此也为我们 学习使用 Spring2 中的 AOP 打下基础。 5.2.1 AspectJ 介绍 AspectJ 是 Java 语言的一个 AOP 实现,其主要包括两个部分,第一个部分定义了一套 如何表达、定义面向切面(AOP)编程中的相关概念(如连接点、切入点、增强、切面等)的 语法规范。通过这套语言规范,我们可以方便地用 AOP 来解决 java 语言中存在的交叉关注 点问题。AspectJ 的另外一个部分是工具部分,包括编译器、调试程序的工具以及为了更方 便开发基于 AOP 应用而设计的开发集成工具等。 AspectJ 是最早、功能比较强大的 AOP 实现之一,是为数不多的比较完整的 AOP 的实 现,在 AOP 领域基本上充当着行业领头羊的角色,被誉为 AOP 领域的急先锋。AspectJ 的 功能比较强大,从连接点、切入点、通知、引介到切面定义都有一套比较完整的机制,很多 其它语言的 AOP 实现,也借鉴或采纳了 AspectJ 中很多设计。在 Java 领域,AspectJ 中的很 多语法结构基本上成了 AOP 领域的标准,比如:在 Spring2.0 中,AOP 部分就作了比较大 的调整,不但引入了对 AspectJ 的支持,其自己的 AOP 核心部分的很多使用方法、定义乃 至表示等都力求保持与 AspectJ 一致。因此,要学习使用 AOP,我们有必要从 AspectJ 开始, 因为他本身就是 java 语言 AOP 解决方案,就算不用 Spring,也可以独立地用于我们的 Java 应用程序中。 AspectJ 是 Eclipse 下面的一个开源项目,当前发布的版本是 AspcetJ5。 5.2.2 AspectJ 的下载及安装 AspectJ 的官方网址是:http://www.eclipse.org/aspectj/ 要使用 AspectJ,首先需要下载并安装 AspectJ。直接进入其官网站,点击【downloads】 栏目,在下载页面中选择 AspectJ 的一个版本,一般选择【Latest Stable Release】,然后点击 后面 aspectj-xxx.jar 连接,即可进入下载页面,如“图 5-3”所示。 9
The▲ ct project at eclipse:E:Dn发 文件①)编辐①)查看Q收藏)工具①)帮助Q ⊙后退··囚日心|P搜立收藏夹|·日 地址①)圈/生质性 转到链接” See below for a list of available Aspect downloads. You probably want one of the most recent development build. the most cent milestone build, or the latest stable release. Installation instructions and more information on DE support can be found at ②L red to work with a pre-release compiler. The most recent (size: 11086883 bytes) stable build below is the currently supported release version Changes in this build) Bugs resolved since last release This download is updated after every successful build and test cycle 2 AspectJ.5. 2a, Released 21st August,2006 AspectJ compiler, browser, documentation tool, Ant tasks, and documentation aspect- 15.ajar (-10M) spect 5 2 Aspect 1.5.2a, Released 21st August, 2006 59 Internet 图5-3 Aspect下载页面 下载得到的是一个形如 aspect]. Jar的文件,比如我们以当前比如新的 aspectj5为例, 我们得到一个 aspect]-1.5.2ajar文件。然后进入命令行,输入类似 Java -jar D: testlaspect-1.5.2ajar的命令即可启动 Aspect安装程序,如“图5-4”所示
图 5-3 AspectJ 下载页面 下载得到的是一个形如aspectj-xxx.jar的文件,比如我们以当前比如新的aspectj1.5为例, 我们得到一个 aspectj-1.5.2a.jar 文件。然后进入命令行,输入类似 java -jar D:\test\aspectj-1.5.2a.jar 的命令即可启动 AspectJ 安装程序,如“图 5-4”所示。 10
CNC: \TIHDOTS\system32\cnd, ere java jar D-ltestlaspecti-152 DOcuments and Settings \Administrator)java -jar D: \test \aspectj-152a. jar aspect crosscutting objects for better modularity Installer for Aspect] 5 Development KitT Version 1.5.2a built on Friday Aug libraries, structure browser, ant tasks, documentation, and examples. This distribution is covered by th ForIdEintegrationsorsourcecodeseetheprojecthomepageathttpeclpse.org/aspectj orporation, 2002 Palo Alto Re Center. In ed,2003-2005 Back 图5-4启动 Aspect.安装程序 然后按照界面的提示,点击相应的按钮,开始按装。安装完成后,会出现类似“图5-5” 的界面 t Installer for AspectJ(TB) aspec叮 crosscutting objects for better modularity The automatic installation process is complete. We recommend you complete the installation as follows 1. Add e: \aspectj 5\lib\aspectjrt jar to your CLASSPATH. This small jar file contains classes required by any program compiled with the ajc compiler 2. Modify your PATH to include c: \aspectj1. 5\bin. This will make it easier to run ajc and ajbrowser These steps are described in more detail in c: \aspectj5\README-AspectJhtml Back Cancel 11
图 5-4 启动 AspectJ 安装程序 然后按照界面的提示,点击相应的按钮,开始按装。安装完成后,会出现类似“图 5-5” 的界面: 11
图5-5 Aspect安装成功提示界面 “图5-5”表示已经成功把 aspect安装到了指定目录,并建议我们把 aspect]rtJar文件添 加到我们的 classpath中,并把 AspectJ的bin目录添加到操作系统的path中,这样以便于我 们在任何目录使用 Aspect提供的工具及库文件,点击【 finish】按钮完成安装! 安装完成后,切换到 aspect安装目录,可以看到bin、lb、doc三个目录,其中bin目 录包含了 AspectJ的编译器及相关调试工具等,ib目录是编译 Aspect.的程序时所要用到库 文件,doc目录是 Aspect的帮助、入门指南等文档及 Aspect应用示例代码目录。通过doc 目录的文档及示例代码,我们可以快速学习及掌握 Aspect的用法。 当然,要在命令行很好的使用 AspectJ的相关工具,需要设置一些环境变量。首先是把 ib里面的 aspect]rtJar加到系统的 classpath中,另外还要把 aspect主目录下的bin目录加到 系统环境变量path中。分别如“图5-6”及“图5-7”所示 系统屈性 ? 常规计算机名|硬件高级|自动更新|远程 ? R亡群 编辑系统变量 ?x 变量名0E 变量值 r: C: aspectj. 5liblaspectirt iar: ll L确定取消 系统变量) 变量 值 classpath C: \aspectj5\lib\aspectjlib, ja ClusterLog C: \WINDOWS\Cluster\cluster log ComSpec C: \WINDOWS\system 32\cmd. exe FP NO HOST C.. NO C:jak1.5.0_08 NUMBER OF PR. 1 新建 编辑① 删除①) 确定 取消 图56把 AspectJ的相关1b添加到 classpath 辑系统变量 变量名① Path 变量值) t: %java home%\bin: C: \aspect j1. 5\bin L确定」取消 图5-7把 Aspect主目录下的bin目录添加到系统path中
图 5-5 AspectJ 安装成功提示界面 “图 5-5”表示已经成功把 aspectj 安装到了指定目录,并建议我们把 aspectjrt.jar 文件添 加到我们的 classpath 中,并把 AspectJ 的 bin 目录添加到操作系统的 path 中,这样以便于我 们在任何目录使用 AspectJ 提供的工具及库文件,点击【finish】按钮完成安装! 安装完成后,切换到 aspectj 安装目录,可以看到 bin、lib、doc 三个目录,其中 bin 目 录包含了 AspectJ 的编译器及相关调试工具等,lib 目录是编译 AspectJ 的程序时所要用到库 文件,doc 目录是 AspectJ 的帮助、入门指南等文档及 AspectJ 应用示例代码目录。通过 doc 目录的文档及示例代码,我们可以快速学习及掌握 AspectJ 的用法。 当然,要在命令行很好的使用 AspectJ 的相关工具,需要设置一些环境变量。首先是把 lib 里面的 aspectjrt.jar 加到系统的 classpath 中,另外还要把 aspectj 主目录下的 bin 目录加到 系统环境变量 path 中。分别如“图 5-6”及“图 5-7”所示: 图 5-6 把 AspectJ 的相关 lib 添加到 classpath 图 5-7 把 AspectJ 主目录下的 bin 目录添加到系统 path 中 12
这样即完成了在 Windows操作系统下 Aspect.的手工安装。这时重新进入命令窗口,即 可使用 Aspect.的编译工具aic命令来代替 Javac命令编译java源文件了。 523在 Eclipse中开发 Aspect.程序 当然,在实际开发中,我们很少使用命令行来编译或调试程序了。一般情况下都是使用 功能比较强大的专业Java开发工具及平台。 Aspect除一套完整的语法规范以外,还提供在 各种常用java开发工具开发 Aspect程序的插件,包括 Eclipse、 JBuild、 Netbeans、 JDeveloper 等。在这里,我们简单讲解 Aspect与 Eclipse集成应用。 首先需要下载并安装 AspectJ的 Eclipse插件AJDT( AspectJ Development Tools)。跟安装 其它 Eclipse插件一样,有两种方法安装AJDT,下面简要介绍。 第一种方法是直接到AJDT的官方网站htp/ vww.eclipse.org/ajdt上面,根据自己的 Eclipse版本,选择下载相应的版本的插件。下载下来的插件是一个形如 ajdt14 for eclipse3.2zip的压缩文件,其中包含 features及 plugins两个目录,把这个压缩 文件解压到 Eclipse的主目录即可,然后重新进入 Eclipse,在 Eclipse的【 Preference】面板 中,即会看到一个【 Aspect Compiler】的选项,即表示AJDT已经正确安装 第二种方法是直接使用 Eclipse的插件自动更新功能来安装。直接点击 Eclipse的【help】 >【 Software Updates】-【 Find and Install.】,即可进入插件自动更新/安装界面,点击界 面上的【 New Remote site.】按钮,然后在弹出的对话框中输入插件的名称,即AJDT,在 URL一栏输入自动更新URL地址,比如:htp/ download. eclipse. org/tools/ajd32/ update,点 "OK"按钮,开始插件安装,安装过程中会出现一些对话框,根据情况作相应的选择即可 如“图5-8”所示
这样即完成了在 Windows 操作系统下 AspectJ 的手工安装。这时重新进入命令窗口,即 可使用 AspectJ 的编译工具 ajc 命令来代替 javac 命令编译 java 源文件了。 5.2.3 在 Eclipse 中开发 AspectJ 程序 当然,在实际开发中,我们很少使用命令行来编译或调试程序了。一般情况下都是使用 功能比较强大的专业 Java 开发工具及平台。AspectJ 除一套完整的语法规范以外,还提供在 各种常用 java 开发工具开发 AspectJ 程序的插件,包括 Eclipse、JBuild、NetBeans、JDeveloper 等。在这里,我们简单讲解 AspectJ 与 Eclipse 集成应用。 首先需要下载并安装 AspectJ 的 Eclipse 插件 AJDT(AspectJ Development Tools)。跟安装 其它 Eclipse 插件一样,有两种方法安装 AJDT,下面简要介绍。 第一种方法是直接到 AJDT 的官方网站 http://www.eclipse.org/ajdt/上面,根据自己的 Eclipse 版本,选择下载相应的版本的插件。下载下来的插件是一个形如 ajdt_1.4_for_eclipse_3.2.zip 的压缩文件,其中包含 features 及 plugins 两个目录,把这个压缩 文件解压到 Eclipse 的主目录即可,然后重新进入 Eclipse,在 Eclipse 的【Preferences】面板 中,即会看到一个【AspectJ Compiler】的选项,即表示 AJDT 已经正确安装。 第二种方法是直接使用 Eclipse 的插件自动更新功能来安装。直接点击 Eclipse 的【help】 ->【Software Updates】->【Find and Install... 】,即可进入插件自动更新/安装界面,点击界 面上的【New Remote Site... 】按钮,然后在弹出的对话框中输入插件的名称,即 AJDT,在 URL 一栏输入自动更新 URL 地址,比如:http://download.eclipse.org/tools/ajdt/32/update,点 "OK"按钮,开始插件安装,安装过程中会出现一些对话框,根据情况作相应的选择即可。 如“图 5-8”所示: 13