- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AOP研究
Key Points AOP的基本概念 Advice的类型 AOP的实现方式---Proxy AOP的实现方式---CGLib XML配置AOP 注解配置AOP 前面已经介绍了关于Spring中的IOC,接下来介绍下AOP。 首先,在OO设计中,由类组成了模块化,而AOP的出现,弥补了OO中的不足点。原因是:在AOP中模块化的单元是切面。切面能对关注点进行模块化,例如:横切多个类型和对对象的事务管理,而每个关注点被称作为横切关注点。 一 AOP的基本概念 1. 切面 Aspect : 一个关注点的模块化,可以横切多个对象,例如:事务管理。在Spring AOP中,切面可以使用基于模式或者基于Aspect注解的方式来实现。 2. 连接点 Jointpoint 在程序执行过程中某个特定的点。比如某个方法调用的时候或者处理异常的时候。在Spring AOP中,一个连接点总表示一个方法的执行。 3. 通知 advice 许多AOP框架都是以拦截器做通知模型,并维护一个以连接点为中心的拦截器链。 在切面的某个特定连接点上执行的动作。 4. 切入点 Pointcut 匹配连接点的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行 例如:当执行某个特定名称的方法时 。切入点表达式如何和连接点匹配是AOP的核心。Spring缺省使用AspectJ切入点语法。 5. 引入 Introduction 用来给一个类型声明额外的方法或属性(也被称为连接类型声明)。Spring允许引入一个新的接口以及对应的实现到任何被代理的对象。例如:你可以使用引入来使一个bean实现IsModified接口,以便简化缓存机制。 6. 目标对象 Target Object 被一个或多个切面通知的对象,也被称为被通知对象。而在Spring AOP中,目标对象是通过运行时代理实现的,所以这个对象永远是被代理 Proxied 对象。 7. AOP代理 AOP Proxy AOP框架创建的对象,用来实现某个契约。在AOP中,AOP代理可以是JDK的Proxy或者CGLib。 8. 织入 Weaving 把切面连接到其它应用程序类型或对象上,并创建一个被通知的对象。这些可以在编译时 如使用AspectJ编译器 ,类加载时或运行时完成。Spring和其它的AOP都是在运行时织入。 二 通知 Advice 的类型 主要包含以下五种通知: 1 Before Advice 在连接点执行的通知。 2 After returning Advice 在连接点之后执行的通知,如果没有任何异常,那就返回。 3 After throwing Advice 执行连接点时抛出异常退出时执行的通知。 4 After Advice 在连接点退出的时候执行的通知,不管任何时候,都会被执行。 5 Around Advice 包围一个连接点的通知,如方法调用,这是最强大的通知类型。可以在连接点前后完成自定义的行为,也可以选择是否继续执行连接点或者直接返回值或抛出异常来终止执行。 下面有一个Sample:
Java代码
PersonServiceBean?bean? ? PersonServiceBean this.targetObject; Object?result? ?null; if bean.getUser ?! ?null //before?Advise :前置通知 try result? ?methodProxy.invoke proxy,?args ; //after?advise :后置通知 catch? Exception?e e.printStackTrace ; //exception?Advise :例外通知 finally //finally?Advise:最终通知 PersonServiceBean bean PersonServiceBean this.targetObject;
Object result null;
if bean.getUser ! null //before Advise :前置通知 try result methodProxy.invoke proxy, args ; //after advise :后置通知 catch Exception e e.printStackTrace ; //exception Advise :例外通知 finally //finally Advise:最终通知 三 AOP的实现方式---Proxy Spring默认使用J2SE动态代理来作为AOP的代
文档评论(0)