什么是AspectJ - 编程入门网
什么是AspectJ时间:2011-05-15 IBM 王海龙1. 序 Aspect Oriented Programming (AOP)是近来一个比较热门的话题。 AspectJ是AOP的Java语言的实现,获得了Java程序员的广泛关注。 关于AspectJ和AOP的具体资料,请从下列链接中查找: http://www.eclipse.org/aspectj/ http://www.parc.com/research/csl/projects/aspectj/ http://aosd.net/ 网上出现了很多讲解AspectJ的资料,但大多是从讲解AspectJ语法开始,然后讲解如何应用AspectJ,如何分离软件开发过程的不同方面(Aspect)--Log,Session,Authentication and Authorization,Transaction,等等。 初次接触AspectJ的读者看到这些资料(或者语法手册),会感到AspectJ有些神秘。他们想知道,AspectJ是如何做到这些的?AspectJ是怎样工作的?AspectJ需要特殊的运行环境吗? 本文从另一个角度讲解AspectJ,本文从讲解AspectJ的设计思路、运行原理入手,回答上述问题。 本文讲解的主要内容,按照概念的重要程度,排列如下: AspectJ是一个代码生成工具(Code Generator)。 AspectJ语法就是用来定义代码生成规则的语法。您如果使用过Java Compiler Compiler (JavaCC),您会发现,两者的代码生成规则的理念惊人相似。 AspectJ有自己的语法编译工具,编译的结果是Java Class文件,运行的时候,classpath需要包含AspectJ的一个jar文件(Runtime lib)。 AspectJ和xDoclet的比较。AspectJ和EJB Descriptor的比较。 本文的原则是,只细讲其他资料没有讲到的东西,其他资料讲过的东西,不讲或略讲。以节省网络资源,更为了节省大家宝贵的时间。 2.Aspect Oriented Programming (AOP) 本节简单介绍AOP的概念,解释我们为什么需要AOP。 AOP是Object Oriented Programming(OOP)的补充。 OOP能够很好地解决对象的数据和封装的问题,却不能很好的解决Aspect("方面")分离的问题。下面举例具体说明。 比如,我们有一个Bank(银行)类。Bank有两个方法,deposit(存钱)和withdraw(取钱)。 类和方法的定义如下:
什么是AspectJ(2)时间:2011-05-15 IBM 王海龙这两个方法涉及到用户的账户资金等重要信息,必须要非常小心,所以编写完上面的商业逻辑之后,项目负责人又提出了新的要求--给Bank类的每个重要方法加上安全认证特性。 于是,我们不得不分别在上面的两个方法中加入安全认证的代码。 类和方法的定义如下:(新增加的代码用不同的背景标出)
这两个方法都需要操作数据库,为了保持数据完整性,项目负责人又提出了新的要求--给Bank类的每个操作数据库的方法加上事务控制。 于是,我们不得不分别在上面的两个方法中加入安全认证的代码。 类和方法的定义如下:(新增加的代码用不同的背景标出)
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |