- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向剖面编程与JBoss
汇聚技术精英,增进技术交流 www.j
面向剖面编程与 JBoss
作者:比尔 柏克,阿德莱恩 布鲁克
2003年5 月28日
翻译:JR Java技术文献翻译小组 coolients
网址:
日期:2004-06-12
版本:
概述
面向剖面编程(Aspect-Oriented Programming, AOP )是一个令人振奋的新领
域,它将带来的影响,应该不亚于面向对象编程(OOP) 15-20 年前所产生过的影
响。不过AOP 与 OOP 并不是相互竞争的两种技术,两者实际上互补得很好。OOP
擅长于用模块概念来描述对象层次关系(hierarchy) 中的共同行为。但它也有局限
性。如果一组互不关联的对象模块之间有一些共同行为动作需要处理,OOP 就有
点力所不逮。而这就是 AOP 登台亮相的时候了。当这些互相独立的不同对象模块
有一些具有横切性(crosscutting )的事务行为需要定义时,AOP 为你提供了方
便,因为它能将有关功能行为表述为独立的层(layer) ,而不是将这些功能嵌入
(embed)到当前模块中。这种程序描述方式改善了可读性,而且能使软件维护更为
便利。OOP 软件开发的构思是一个从上到下的纵式发展过程,而 AOP 却是个从左
到右的横向过程。两者是垂直交切的关系,但又有很好的互补性。
我们知道 OOP 的装备是继承,封装和多态,而AOP 的组件则是指示
(advice )/拦截器(interceptor ),引导(introduction ),元数据(metadata )和切
分点(pointcut )。下面我们介绍一下这些概念。
指示/拦截器
一个指示就是一段由特定事件触发的程序逻辑,是能够被插入在调用者(激活
其它方法的主体)和被调用者(被激活的方法)之间的行为。指示其实就是 AOP 核
心概念。指示使你能够将诸如日志和观测之类的功能运用在现有的对象模型上而不
必过问实现细节。
在 JBoss AOP 中,我们是用拦截器来实现指示。你可以定义拦截器,让它拦
截方法调用、构造器调用和域访问。我们以后将讨论怎样将这些拦截器运用到现有
的对象模块之上。
1
汇聚技术精英,增进技术交流 www.j
引导 (introduction)
借助引导,我们可以将方法或域增加到一个现有的类中。它们甚至允许你修改
某个现有的类目前所实现的接口,并且引入一个实现了那些新接口的混合类。引导
使你能够将多继承特性注入普通的 Java 类。一个极好的引导用例是你想让你手头
处理的一个剖面有一个运行期接口。你希望这个剖面能跨越对象层次,在不同的对
象类中能广泛地应用。但你同时也希望应用程序开发者能够调用专为剖面制定的
API.
Apple apple = new Apple();
LoggingAPI logging = (LoggingAPI)apple;
Apple.setLoggingLevel(VERBOSE);
引导可以用来将一个新的API 追加到一个现有的对象模块上。
元数据
元数据是另一种能够追加到现有类之中的信息。它可以在在静态状态下或者在
运行期追加。如果能够将元数据动态追加到一个给定的对象实例中,其意义就更大
了。元数据最有用的一个情况是,你想写一个可运用于任何对象的全面通用的剖
面,而程序逻辑却又需要知道各个类的具体信息。对于元数据的应用,有一个很好
的类比,这就是EJB规范。在EJB的XML部署描述符中,你会针对每一个方法分别定
义事务属性。应用程序服务器于是知道应该在什么时候和什么地方开始、挂起或者
提交一个事务,因为你已经在EJB类和事务管理控件之间建立了元数据绑定关系
(记录在bean的XML配置文件中),这些数据绑定关系定义了Required,
RequiresNew,Support等等方法。
C#直接把元数据作为内置成分。XDoclet是另一个元数据实际运用的好例子。
如果你曾经用Xdoclet来生成EJB文件和部署描述符,你就会知道元数据的能量。
Java社区行动(Java Communit
您可能关注的文档
最近下载
- 外研版初中英语单词总表(7~9年级).pdf VIP
- 第十三课 实现人生价值(课件)七年级道德与法治上册课件(统编版2024).pptx VIP
- 视频监控系统调试记录.xls VIP
- 2025至2030中国骨关节补充剂行业市场深度研究与战略咨询分析报告.docx
- 新版《建筑设计服务计费指导》.pdf VIP
- 如何写课例研究报告课件.ppt VIP
- 辽宁省单招考试题库.docx VIP
- 大学英语四级考试2024年12月真题(第一套)Part IV Translation.pptx VIP
- 国有企业党委书记2024-2025年生活会个人对照检查发言材料(四个带头+典型案例).docx VIP
- 北京市海淀区2024-2025学年四年级上册期末考试数学试卷(含答案).pdf VIP
原创力文档


文档评论(0)