网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  aop概念     
  文章作者:未知  文章来源:水木森林  
  查看:80次  录入:管理员--2007-11-17  
 

让我们从定义一些重要的aop概念开始。这些术语不是spring特有的。不幸的是,spring的术语 不是特别地直观。而且,如果spring使用自己的术语,这将使人更加迷惑。

  • 方面(aspect): 一个关注点的模块化,这个关注点实现可能 另外横切多个对象。事务管理是j2ee应用中一个很好的横切关注点例子。方面用spring的 advisor或拦截器实现。

  • 连接点(joinpoint): 程序执行过程中明确的点,如方法的调 用或特定的异常被抛出。

  • 通知(advice): 在特定的连接点,aop框架执行的动作。各种类 型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多aop框架 包括spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器 链。

  • 切入点(pointcut): 指定一个通知将被引发的一系列连接点 的集合。aop框架必须允许开发者指定切入点:例如,使用正则表达式。

  • 引入(introduction): 添加方法或字段到被通知的类。 spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现 ismodified接口,来简化缓存。

  • 目标对象(target object): 包含连接点的对象。也被称作 被通知被代理对象。

  • aop代理(aop proxy): aop框架创建的对象,包含通知。 在spring中,aop代理可以是jdk动态代理或者cglib代理。

  • 织入(weaving): 组装方面来创建一个被通知对象。这可以在编译时 完成(例如使用aspectj编译器),也可以在运行时完成。spring和其他纯java aop框架一样, 在运行时完成织入。

各种通知类型包括:

  • around通知: 包围一个连接点的通知,如方法调用。这是最 强大的通知。aroud通知在方法调用前后完成自定义的行为。它们负责选择继续执行连接点或通过 返回它们自己的返回值或抛出异常来短路执行。

  • before通知: 在一个连接点之前执行的通知,但这个通知 不能阻止连接点前的执行(除非它抛出一个异常)。

  • throws通知: 在方法抛出异常时执行的通知。spring提供 强类型的throws通知,因此你可以书写代码捕获感兴趣的异常(和它的子类),不需要从throwable 或exception强制类型转换。

  • after returning通知: 在连接点正常完成后执行的通知, 例如,一个方法正常返回,没有抛出异常。

around通知是最通用的通知类型。大部分基于拦截的aop框架,如nanning和jboss4,只提供 around通知。

如同aspectj,spring提供所有类型的通知,我们推荐你使用最为合适的通知类型来实现需 要的行为。例如,如果只是需要用一个方法的返回值来更新缓存,你最好实现一个after returning 通知而不是around通知,虽然around通知也能完成同样的事情。使用最合适的通知类型使编程模型变 得简单,并能减少潜在错误。例如你不需要调用在around通知中所需使用的的methodinvocation的 proceed()方法,因此就调用失败。

切入点的概念是aop的关键,使aop区别于其它使用拦截的技术。切入点使通知独立于oo的 层次选定目标。例如,提供声明式事务管理的around通知可以被应用到跨越多个对象的一组方法上。 因此切入点构成了aop的结构要素。

 
 
上一篇: acegi框架介绍    下一篇: apache与sun开战 指其利用许可打压对手
  相关文档
小心进行 j2ee web services 的测试 11-17
走向j2ee,漫长的道路 11-17
[webservices开发]集成spring 11-17
利用yahoo! search api开发自已的搜索引擎-javascript版 11-16
springframework入门实用攻略 11-17
hibernate 入门之轻松上手 选择自 chainshun 的 blog 11-17
用java程序取得ip地址 11-17
构建自己的基于 java 的超级计算机 11-17
电话管理系统.java 11-17
jbuilder 8新特性简介 11-16
java数据对象应用程序接口castor使用参考 11-17
用rmi进行远程方法调用 11-16
步入swt/jface世界,你还等什么 11-17
课程介绍(12): sl-330 用java技术开发数据库 11-17
java实现汉字转换为拼音 11-16
解决j2ee系统应用性能问题常用优化项目 11-16
一个在程序中实现plugin机制的简单例子 11-17
j2ee开发n层应用 11-17
jdk1.4中工具有哪些改变 11-17
基于javascript v8引擎 谷歌chrome浏览器 09-03
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息