j2ee项目实训spring框架技术——第7章springaop中的advice通知第3部分内容摘要:

户方所提出的这个要求,其实从具体的技术难度来说没有什么困难的,问题是如果按照常规的实现方式, 则是需要修改原始系统的代码来扩展功能。 但是开发者又不希望对所涉及的业务类的代码进行修改。 因为如果采用这样的实现策略进行的话,可能将会增加大量的工作量。 特别是应用系统的架构和分层设计时不良好的情况下,此问题将更加突出。 解决此问题的比较好的方法是应用 Spring 框架 AOP 中的 引入通知组件技术,下面将具体介绍引入通知 技术以及 如何应用引入通知来实现此需求。 在项目中 增加一个新的功能所应该完成的功能接口 ( 1) 新 增加一个实现扩展功能所应该完成的功能接口 接口名称为 BBSInfoManageExtendsInterface,包名称为。 请见下面的图 中所示的输入参数的要求。 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有 ,盗版必究 , 6/15 页 图 添加 BBSInfoManageExtendsInterface 接口的对话框 ( 2)设计该 BBSInfoManageExtendsInterface 接口 【例 7– 16】 BBSInfoManageExtendsInterface 接口 的代码示例 package。 import。 public interface BBSInfoManageExtendsInterface { public boolean doExtendsSaveBBSInfo(BBSInfoVO oneBBSInfo) throws WebBBSException。 } 为了能够遵守“面向接口”编程实现,对所需要进行扩展的功能也规定一个接口,通过该接口对原来的 doSaveBBSInfo 方 法 进 行 功 能 扩 展 的 定 义。 在 该BBSInfoManageExtendsInterface 接口中的方法定义应该与被扩展的功能类中的原来的方法(本示例为 doSaveBBSInfo 方法)保持一致的方法原型。 在项目中 增加一个 引入通知组件 类 ( 1)新 增加一个引入通知组件 类 类名称为 BBSInfoManageIntroductionAdvice,包名称为。 并实 现 前 面 的 BBSInfoManageExtendsInterface 接 口 , 同 时 还 要 继 承 于 类(这样将能够保证该 引入通知组件 类是某种形式的拦截器 Interceptor 的形式出现)。 请见下面的图杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有 ,盗版必究 , 7/15 页 中所示的输入参数的要求。 图 新 增加一个 引入通知组件 类的对话框 ( 2)编程 引入通知组件 类 BBSInfoManageIntroductionAdvice 的实现代码 在下面的 【例 7– 17】 中给出了 引入通知组件 类 BBSInfoManageIntroductionAdvice 的代码实现的示例,并请注意其中的黑体部分的代码。 【例 7– 17】 引入通知组件 类 BBSInfoManageIntroductionAdvice 的 代码示例 package。 import。 import。 import。 import。 import。 public class BBSInfoManageIntroductionAdvice extends DelegatingIntroductionInterceptor implements BBSInfoManageExtendsInterface { public BBSInfoManageIntroductionAdvice() { } public BBSInfoManageIntroductionAdvice(Object arg0) { super(arg0)。 } public boolean doExtendsSaveBBSInfo(BBSInfoVO oneBBSInfo) throws 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有 ,盗版必究 , 8/15 页 WebBBSException { String infoText=在对 doSaveBBSInfo 方法的扩展功能的实现中获得用户名称为。 (infoText+ userName=+ ())。 return false。 } } 注意: 是对IntroductionInterceptor 接口的实现类, DelegatingIntroductionInterceptor 的设计是将introduction 委托到真正实现 introduction 接口的接口,隐藏完成这些工作的拦截器。 覆盖 invoke()方法通常是不必要的: DelegatingIntroductionInterceptor 里面已经包含了一个实现。 如果一个方法被引入,这个实现将调用实际的托管方法。 增加一个 Introduction Advisor 类 该类实现將前面的 Interceptor 组件 BBSInfoManageIntroductionAdvice 类及BBSInfoManageExtendsInterface 接 口 关 联 在 一 起 , 一 个 最 简 单 的 方 法 是 使 用 类(该类为适配器类)。 ( 1) 增加一个 Introduction Advisor 类 类 名称 选择 为 BBSInfoManageExtendsAdviso。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。