第4章 Spring AOP(面向方面编程).pptx

第4章 Spring AOP(面向方面编程).pptx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;4.1 AOP概述; 面向方面编程(AOP)也称为面向切面编程,是软件编程思想发展到一定阶段的产物,虽然是一种新的编程思想,但却不是面向对象编程(Object Oriented Programming,OOP)的替代品,它只是OOP的有益补充和延伸。 面向对象程序设计中将程序分解为不同层次的对象,通过封装、继承、多态等特性将对象组织成一个整体来完成功能,但是在一定场合,面向对象编程也暴露出一些问题。在传统的业务处理代码中,通常会进行日志记录、参数合法性验证、异常处理、事务控制等操作。虽然使用OOP可以通过组合或者继承的方式来达到代码的重用,但要实现某些功能(如日志记录),同样的代码仍然会分散到各个方法中。这样,如果要关闭某个功能,或者对其进行修改,就必须要修改所有的相关方法。这不仅增加开发者的工作量,相应的代码出错率也会提高。 ; 在业务系统中,总有一些散落、渗透到系统各处且不得不处理的事情,这些穿插在既定业务中的操作就是所谓的“横切逻辑”,也称为切面。将重复性的代码抽取出来,放在专门的类和方法中的处理,这样就便于管理和维护了。即便如此,依然无法实现既定业务和横切逻辑的彻底解耦,因为业务方法中还要保留这些方法的调用代码,当需要增加或者减少横切逻辑的时候,还是要修改业务方法中的调用代码才能实现。我们所希望的是无需编写显式的调用,在需要的时候能够“自动”调用所需的功能,这正是AOP所要解决的问题。 AOP采取横向抽取机制,将分散在各个方法中的重复代码提取出来,然后在程序编译或运行时,再将这些提取出来的代码应用到需要执行的地方。这种采用横向抽取机制的方式,采用传统的OOP思想是无法办到的,因为OOP只能实现纵向的重用。 ; 面向方面编程,其设计思想来源于代理设计模式,通常情况下调用对象的方法如下所示。 在代理模式中,可为对象设置一个代理对象,代理对象为func()提供一个代理方法。 在此模式下,就可在原有 代码乃至原业务流程都不变 的情况下,直接在业务流程 汇总切入新代码,增加新功 能,这就是所谓的面向切面编程。AOP的使用,使开发人员在编写业务逻辑时可以专心于核心业务,而不用过多地关注于其他业务的实现,这不但提高了开发效率,而且增强了代码的可维护性。; AOP中涉及到切面、通知、切入点、目标对象、代理对象、织入等很多术语,常用的术语简单介绍如下: 切面(Aspect) 连接点(JoinPoint) 切入点(Pointcut) 通知/增强处理(Advice) 目标对象(Target Object) 代理对象(Proxy Object) 织入(Weaving) AOP的概念比较生涩难懂,切面可以理解为由增强处理和切入点组成,即包含了横切逻辑的定义,也包含了连接点的定义。;4.2 基于XML配置文件的AOP实现; 前置通知在连接点(所织入的业务方法)前面执行,不会影响连接点的执行,除非此处抛出异常。 下面通过示例演示如何实现前置通知,其过程如下所示: (1) 将spring-1项目复制并重命名为“spring-5“。 (2) 在前面核心包的基础上,向项目中导入所需的jar包: spring-aop-5.0.4.RELEASE.jar、spring-aspects-5.0.4.RELEASE.jar、aopalliance-1.0.jar和aspectjweaver-1.9.1.jar,添加到构建路径中。 (3) 创建包com.ssm.service,在包中创建接口ProductService。 (4) 创建包com.ssm.service.impl,创建ProductService接口的实现类ProductServiceImpl。 (5) 创建包com.ssm.aop,创建日志通知类AllLogAdvice。 (6) 编辑Spring配置文件applicationContext.xml。 (7) 在com.ssm包中创建测试类TestAOP.java ; 返回通知是指在连接点正常执行后实施增强,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。 下面通过示例演示如何实现返回通知,其过程如下所示: (1) 在日志通知类AllLogAdvice中添加方法myAfterReturnAdvice。 (2) 在Spring配置文件applicationContext.xml中的<aop:aspect>元素内添加 <aop:after-returning>元素,将AllLogAdvice日志通知类中的myAfterReturnAdvice方法指定为返回

文档评论(0)

taihaoxue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档