AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网
AOP@Work: 使用AspectJ 5检验库方面时间:2011-09-07 IBM Wes Isberg编写符合所有类型用户需求的可重用方面 简介:AspectJ 5 新的语言和部署特性简化了库方面(library aspect), 而 库方面又保证一般的开发人员能够掌握 AOP。尽管有着不可思议的易用性,但它 们编写起来非常困难。在 AOP@Work 系列 的这部分内容中,Wes Isberg 编了一个假想的故事,故事所讲述的世界离您的现实生活并不遥远,其 中 有 30 个重大的挑战。通过这个故事,您将学会如何使用及编写库方面,以及如 何为相信这一技术和不相信这一技术的人交付解决方案。 救命! 一名遇险的少女上气不接下气地跑到您面前:“救命! 测 试时一切都好好的,但部署之后,系统突然停止了。没有异常!什么都没有!没 有人知道该怎么做!世界和平正濒临危险!” 您没有多问一个字, 只是打开背包,取出两个瓶子,“试试这个:” java - javaagent:aspectjweaver.jar -classpath "vmErrorAspect.jar:${CLASSPATH}" .. 一分钟后,弹 出一个堆栈跟踪。某人在某处将所有 Error 记入了日志,包括 OutOfMemoryError ,并继续运行。多亏了您的方面 RethrowVMError ! 从魔法瓶到具体方面 实际上,上面提到的两个瓶子中并没有任何魔法: 仅 仅是库方面中的通知(advice),即用装入时织入部署的。库方面 RethrowVMError 会在任何急切的错误处理程序抛出错误之前运行通知,防止其 隐 藏 VMError。AspectJ 5 拥有一些可简化库方面编写的新的语言特性,以及一些 简化具体方面使用的新的部署选项。这些特性和选项共同使经验较少(在使用容 错构建或部署流程方面经验较少)的广大新用户容易掌握 AOP —— 但前提是库方面必须得到很好的调整。作为一名编写库方面的专家 —— 至少是为读者介绍足够知识的作者,我借本文诚挚邀请各位亲 爱 的读者积极提出恰当的问题,并根据相应的回答部署简单的库方面解决方案。 RethrowVMError 是一个简单但强大的解决方案,易于理解和使用。其他 库方面的能力、可理解性和工具与之相比要更为综合。什么才是出色的库方面? 我认为,成功交付库方面源于按用户的需求和技能为其量身订做解决方案,而不 是试图提供最强大或最具可重用性的解决方案。在本文中,您将从一个简单的小 故事中了解到如何从评估用户着手设计方面。作为故事的主角,您的伟大任务就 是为终端用户编写库方面,这些用户的水平参差不齐,从简单的 XML 部署人员 一 直到 Java™ 和 AspectJ 程序员。在故事的发展过程中,您还要对一些希 望成为 AOP 专家的人进行培训,并说服一名持不信任态度的主管采纳 AOP。在 取 得最后的成功时,您将看到,树立所有人对 AOP 信心的关键正是坚实地走完每 一 步。 AspectJ 5 中的可重用方面 AspectJ 5 使可重用方面的编写 比以往任何时候都要更加容易。首先,它有着扩展方面和编写切入点(pointcut )的新形式,不仅在纯粹的 Java 方支持 Java 5 语言特性,更在 AspectJ 语 言 内部支持这些特性。Java 5 注释使那些从未接触过方面的 Java 开发人员能够 理 解甚至编写方面。同时,泛型类型为类型的限定增加了安全性和新方法,尤其是 对于新参数化库方面的用户。本文中介绍的方面示范了所有这些特性。 其 次,AspectJ 5 使得编写和部署方面更为容易,且不需使用 AspectJ 编译器。 在 编写方面,它支持将方面作为纯 Java 代码的注释编写,如 AspectWerkz。这些 注释风格 的方面可由 javac 编译,并随后使用织入器织入。在部署方面,新的 装入时织入器支持 XML 配置文件 META-INF/aop.xml,允许您为一个具体方面中 的抽象库方面声明具体切入点。第一批面世的库方面很可能会采用这种 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |