面向方面编程(Spring AOP).pptVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第19章 面向方面编程 (Spring AOP) 目 录 1 2 AOP简介 基于XML配置文件的AOP实现 * 3 基于@AspectJ注解的AOP实现 19.1 AOP简介 * 在传统的业务处理代码中,通常会进行日志记录、参数合法性验证、异常处理、事务控制等操作。甚至常常要关心这些操作的代码是否处理正确,例如:哪里的业务日志忘记做了,哪里的事务是否在异常时忘记添加事务回滚的代码,更为担心的是如果需要修改系统日志的格式或者安全验证的策略等等,会有多少地方的代码要修改等等? 日志、事务、安全验证等这些“通用的”、散布在系统各处的需要在实现业务逻辑时关注的事情称为“方面”,也可称为“关注点”。如果能将这些“方面”集中处理,然后在具体运行时,再由容器动态织入这些“方面”。 这样至少有以下两个好处: (1) 减少“方面”代码里的错误,处理策略改变时还能做到统一修改。 (2) 在编写业务逻辑时可以专心于核心业务。 AOP要做的事件就是从系统中分离出“方面”,然后集中实现。从而独立地编写业务代码和方面代码,在系统运行时,再将方面“织入”到系统中。 19.1 AOP简介 * 在使用AOP时,会涉及到切面、通知、切入点、目标对象、代理对象、织入等概念。下面对这些概念做简要介绍。 (1) 切面:方面(日志、事务、安全验证)的实现,如日志切面、事务切面、权限切面等等。在实际应用中通常是存放方面实现的普通Java类,要被AOP容器识别为切面,需要在配置中通过bean标记指定。 (2) 通知:是切面的具体实现。以目标方法为参照点。根据放置的位置不同,可以分为前置通知、后置通知、异常通知、环绕通知和最终通知等5种。切面类中的某个方法具体属于哪类通知,需要在配置中指定。 (3) 切入点:用于定义通知应该织入到哪些连接点上。 (4) 目标对象:指将要织入切面的对象,即那些被通知的对象。这些对象中只包含核心业务逻辑代码,所有日志、事务、安全验证等方面的功能等待AOP容器的织入。 (5) 代理对象:将通知应用到目标对象之后,被动态创建的对象,代理对象的功能相当于目标对象中实现的核心业务逻辑功能加上方面(日志、事务、安全验证)代码实现的功能。 (6) 织入:将切面应用到目标对象,从而创建一个新的代理对象的过程。 19.2 基于XML配置文件的AOP实现 * Spring AOP通知包括前置通知、返回通知、正常返回通知、异常通知和环绕通知。 本小节将基于XML配置文件的方式实现前置通知、返回通知、异常通知和环绕通知。 19.2.1 前置通知 * 前置通知在连接点(所织入的业务方法)前面执行,不会影响连接点的执行,除非此处抛出异常。 下面通过示例演示如何实现前置通知,其过程如下所示: ? (1) 将项目spring_1复制并命名为“spring_5”,再导入到MyEclipse开发环境中。 (2) 将spring-aop-4.3.5.RELEASE.jar、spring-aspects-4.3.5.RELEASE.jar、aopalliance-1.0和aspectjweaver-1.8.6.jar文件添加项目spring_5的lib目录中,再将该jar包添加到项目的构建路径中。 (3) 创建包com.shw.service,在包中创建接口MealService,添加方法browse,模拟用户浏览餐品的业务。 (4) 创建接口MealService的实现类MealServiceImpl,存放在com.shw.service.impl包中,实现browse方法。 (5) 创建包com.shw.aop,在包中创建日志通知类LogAdvice,在类中编写用于生成日志记录的方法myBeforeAdvice 。 (6) 编辑Spring配置文件 在Spring配置文件applicationContext.xml中,采用AOP配置方式将日志类LogAdvice与业务组件MealService原本是两个互不相关的类和接口通过AOP元素进行装配,实现将日志通知类LogAdvice中的日志通知织入到MealService中,以实现预期的日志记录。 (7) 在com.shw包中创建测试类TestAOP.java (8) 执行测试类TestAOP,观察控制台输出。 19.2.2 返回通知 * 返回通知在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。 下面通过示例演示如何实现返回通知,其过程如下所示: ? (

文档评论(0)

ma982890 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档