动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Java核心代码例程之:RMIExample.
.使用J2ME与MIDP进行手机开发的全.
.网上选课系统.java.
.使用 ConTest 进行多线程单元测试.
.给你的2D游戏添加3D效果.
.Java学习:一个压缩文件的例子.
.使用Yahoo Service实现天气.
.[翻译]-Windows CE 程序设计 (3r.
.WebLogic Server 性能调优.
.用ANT 开发 Java 程序.
.Java学习的捷径.
.用AspectJ和Spring进行依赖项插入.
.检测你数据库连接的物理状态.
.菜鸟初学Java的备忘录(九).
.RMI的主要优点.
.在无线J2ME设备上实现超文本传输.
.使用DOM和XSL来格式化由Java提取.
.方便的HQL:Hibernate查询语言.
.apply 方法.
.atan 方法.

Java中实现基于Aspectwerkz的AOP开发

发表日期:2008-1-5 |


一、AOP编程概览

  面向对象编程技术进入软件开发的主流对软件的开发方式产生了极大的影响,开发者可以用一组实体以及这些实体之间的关系将系统形象地表示出来,这使得他们能够设计出规模更大、更复杂的系统,开发周期也比以前更短。
OO开发的唯一问题是,它本质上是静态的,需求的细微变化就可能对开发进度造成重大影响。

  ASPect-Oriented Programming(AOP)是对OO技术的补充和完善,它答应开发者动态地修改静态的OO模型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生命周期中不断改变自身,应用程序也可以在发展中拥有新的功能。

  例如,许多人想必有过在开发简单的Web应用时将Servlet作为入口点的经验,即用Servlet接收Html表单的输入,经过处理后返回给用户。开始时的Servlet可能是非常简单的,只有刚好满足用户需求的最少量的代码。然而,随着“第二需求”的实现,例如实现异常处理、安全、日志等功能,代码的体积就会增加到原来的三、四倍——之所以称之为“第二需求”,是因为Servlet的基本功能是接受和处理用户的请求,对于这个目标来说,日志、安全之类的机制并不是必不可少的。

  AOP答应动态地改变OO的静态模型,不必修改原来的静态模型也可以加入满足第二需求所需的代码(实际上,甚至连原来的源代码也不需要)。更令人称奇的是,后来加入的代码往往可以集中在一个地方,而不必象单纯使用OO时那样将后来加入的代码分散到整个模型。

  二、基本术语

  在介绍AOP开发实例之前,我们先来了解几个标准的AOP术语,以便更好地把握相关的概念。

  █ Cross-cutting concern

  在OO模型中,虽然大部份的类只有单一的、特定的功能,但它们通常会与其他类有着共同的第二需求。例如,当线程进入或离开某个方法时,我们可能既要在数据访问层的类中记录日志,又要在UI层的类中记录日志。虽然每个类的基本功能极然不同,但用来满足第二需求的代码却基本相同。

  █ Advice

  它是指想要应用到现有模型的附加代码。在本例中,它是指线程进入或退出某个方法时要运行的日志代码。

  █ Point-cut

  这个术语是指应用程序中的一个执行点,在这个执行点上需要采用前面的cross-cutting concern。在本例中,当线程进入一个方法时出现一个Point-cut,当线程离开方法时又出现另一个Point-cut。

  █ Aspect

  Point-cut和advice结合在一起就叫做aspect。在下面的例子中,我们通过定义一个point-cut并给予适当的advice加入了一个日志(logging)aspect。

  AOP还有其它许多特性和术语,例如引入(IntrodUCtion),即把接口/方法/域引入到现有的类——它极大地拓宽了开发者的想象力。不过本文只介绍一些最基本的持性,熟悉这里介绍的概念后,你再深入一步研究AOP的其它特性,看看如何在自己的开发环境中使用它们。

  三、现有的框架

  目前最成熟、功能最丰富的AOP框架当数AspectJ,AspectJ已成为大多数其它框架跟从的标准。但是,AspectJ也走出了非同平常的一步,它的实现为Java语言增添了新的要害词。虽然新的语法并不难学,但却意味着我们必须换一个编译器,还要重新配制编辑器,只有这样才能适应新的语法。在规模较大的开发组中,这些要求可能难以办到,因为整个开发小组都会受到影响。由于语言本身的变化,开发小组把AOP技术引入到现有项目的学习周期随之延长。

  现在我们需要的是这样一个框架,它可以方便地引入,且不会对原来的开发和构造过程产生任何影响。满足这些要求的框架不止一个,例如JBoss AOP、Nanning、Aspectwerkz(AW)。本文选用的是Aspectwerkz,因为它可能是最轻易学习的框架,也是最轻易集成到现有项目的框架。

  Aspectwerkz由Jonas Boner和Alexandre Vasseur创建,它是目前最快速、功能最丰富的框架之一。虽然它还缺乏AspectJ的某些功能,但己足以满足大多数开发者在许多情形下的需要。

  Aspectwerkz最令人感爱好的特性之一是它能够以两种不同的模式运行:联机模式和脱机模式。在联机模式下,AW直接干预属于JVM的底层类装入机制,截取所有的类装入请求,对字节码实施即时转换。AW提供了干预类装入过程的许多选项,另外还有一个替代bin/java命令的封装脚本,这个脚本能够根据Java版本和JVM能力自动生成一组可运行的配制。对于开发者,联机模式有许多优点,它能插入到任何类装入器并在类装入期间生成新的类。也就是说,我们不必手工修改应用程序的类,只要按通常的方式部署即可。不过,联机模式要求对应用服务器进行额外的配制,有时这一要求可能很难满足。

  在脱机模式下,生成类需要二个步骤。第一步是用标准的编译器编译,第二步是重点——以脱机模式运行AWcompiler编译器,让它处理新生成的类。编译器将修改这些类的字节码,根据一个XML文件的定义,在适当的point-cut插入advice。脱机模式的优点是AWcompiler生成的类能够在任何JVM 1.3以上的虚拟机运行,本文下面要用的就是这种模式,因为它不需要对Tomcat作任何修改,只要对构造过程稍作修改就可以照搬到大多数现有的项目。

  四、安装

  本文将以一个简单的Web应用程序为例,它用Ant编译,部署在Tomcat 4+ Servlet容器上。下面我们假定读者己预备好上述环境,包括JVM 1.3+,同时Tomcat被设置成从webapps文件夹自动部署应用,自动将WAR扩展到目录(这是Tomcat默认的操作方式,因此只要你尚未修改Tomcat的运行方式,下面的范例可直接运行)。我们将把Tomcat的安装位置称为%TOMCAT_HOME%。

  ⑴ 从http://apectwerkz.codehaus.org/下载Aspectwerkz,解开压缩到适当的位置。我们将把这个位置称为%ASPECTWERKZ_HOME%。

  ⑵ 设置%ASPECTWERKZ_HOME%环境变量。

  ⑶ 将Aspectwerkz加入到PATH环境变量,即设置set PATH=%PATH%;%ASPECTWERKZ_HOME%\bin\aspectwerkz

  ⑷ 下载本文的示范程序,将它放入%TOMCAT_HOME%\webapps文件夹。

  ⑸ 将Aspectwerkz的运行时类加入到Tomcat的classpath。你可以将它的JAR文件放入示例应用的WEB-INF\lib文件夹,或放入%TOMCAT_HOME%\common\lib。 五、编译示例应用

  假如你想深入研究一下本文的示例应用,可以解开WAR文件提取它的内容。你会发现根目录下有一个aspectwerkz.xml文件,构造应用时它会被复制到WEB-INF/classes目录。Servlet和advice的源文件在WEB-INF/src目录下,另外还有一个构建这些类的ANT脚本。
上一篇:关于Java连接各种数据库的实例 人气:369
下一篇:JBuilder+WebLogic实现教材管理系统 人气:724
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-12 team论坛 v2.0.4 bulid 080916 A
2008-10-12 Roclog v3.1.6
2008-10-12 SupeV v1.0.1 简体中文 GBK
2008-10-12 NetCMS v1.6.0.1010 正式版
2008-10-12 PHP考试系统PPFrame v1.2.7
2008-10-12 LPAS个人相册 v1.6.3
2008-10-12 快问仿百度知道系统 动态-静态-互
2008-10-12 方卡广告防点击系统 V1.0 GB2312
2008-10-12 泡菜内容管理系统[PCMS] v1.0 Bu
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号