j2ee项目实训spring框架技术——第6章aop和springaop技术第2部分内容摘要:
的目标,一般采用 GOF 设计 模式中的代理模式来编程实现。 下面通过一个在某系统中的业务层组件实现日志记录的功能为例,说明代理模式和 AOP 技术在实现上的不同。 常规的 日志记录的实现方法 杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 8/16 页 ( 1) 某系统的用户信息管理的业务层组件的接口 UserManagerInterface 的定义 【例 66】 UserManagerInterface 接口 的定义 示例 package。 public interface UserManageInterface{ public boolean doUserLogin(String userName, String userPassWord)。 public boolean doUserLogout(String userName)。 } ( 2)为 接口 UserManagerInterface 提供一个实现类 UserManageImplement 【例 67】 实现类 UserManageImplement 的代码示例 package。 import .*。 public class UserManageImplement implements UserManageInterface { private Logger logger = (().getName())。 public UserManageImplement() { } public boolean doUserLogin(String userName, String userPassWord){ (, doUserLogin 方法开始执行 ....)。 (userName= + userName +正在登录系统 !)。 //代表业务实现 (, doUserLogin 方法已经结束 ....)。 return true。 } public boolean doUserLogout(String userName){ (, doUserLogout 方法开始执行 ....)。 (userName= + userName + 正在注销 !)。 //代表业务实现 (, doUserLogout 方法已经结束 ....)。 return true。 } } 在该实现类中的两个业务方法中实现 日 志记录的功能, 本示例为了简化之目的,没有杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 9/16 页 将具体的业务功能的实现代码附录出,而以打印输出信息作为代表。 常规的 日志记录的实现方法 的 缺点 ( 1)没有遵守 面向对象设计中的 “单一职责”的原则 在 常规的实现方法 中, 使得 Logger 日志记录的功能 的实现直接 介入到了 业务功能实现类 UserManageImplement 中,而日志这个功能 应该 不属于 业务功能实现类UserManageImplement 所 必须 应该考虑实现的 (或者说本不属于它应该承担的职责) ,这将 使得 UserManageImplement 类 的职责 成为双 重职责 ,这是 与 面向对象设计中的 “单一职责”的原则 不 相 吻合。 ( 2) 实现 日志记录的功能 代码重复 地 遍布在 各个方法中 在本示例中目前还只是两个业务方法 ,如果在整个应用 系统 的各个模块中都需要 应用日志这个功能,那将会使日志功能代码遍布在应用 系统 的各个模块中。 解决 此问题 的基本思路 将主应用功能模块( 也就是前面所描述的 核心关注点 , 在 本示例中 为业务功能类UserManageImplement)和日志功能( 也就是前面所描述的 横切关注点)相互分离。 可以采用代理模式和 Spring AOP 技术来解决此问题 ( 1)方法 之 一是采用静态代理技术 所谓的静态代理类是由开发者编程创建或由特定工具自动生成源代码,然后再对其编译。 在程序运行前,该代理类的 .class 文件就已经存在了。 采用静态代理技术时,开发者可以以下面的两种方式来具体实现。 1) 针对每个具体类分别编写代理类; 2) 针对一个接口编写一个代理类; ( 2)方法二是采用动态代理技术 所谓的动态代理类是指在程序运行时,运用反射机制动态创建出。 但该动态代理类需要实现 InvocationHandler 接口,然后借用 JDK 反射包中的 Proxy 类为各种接口动态生成杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料 杨教授工作室,版权所有,盗版必究 , 10/16 页 相应的代理类。 ( 3)方法三是采用 Spring 框架中的 AOP 技术,但使用 Around 类型的 Advice 来具体实现。 采用静态代理技术 的具体实现示例 ( 1) 修改 前面的 【例 67】中的 UserManagerInterface 接口 的实现类 为下面的 【例 68】中所示的 代码 【例 68】 对 UserManageImplement 类进行 修改 后的结果示例 package。 public class UserManageImplement implements UserManageInterface{ public boolean doUserLogin(String userName, String userPassWord) { (userName= + userName +正在登录系统 !)。 return true。 } public boolean doUserLogout(String userName) { (userName= + userName +正在注销 !)。 return true。 } } 因此,应用 代理模式后,原来的业务功能类将不再包含有其它横切关注点的功能实现代码,因此分离了两者 各自的功能实现。 ( 2)为该实现类 UserManageImplement 提供一个代理类 在 代理 模式 中 主要包括代理对象 本身 和被代理对象 ,它们要实现相同的接口。 根据代理模式的实现规则,开发者在该代理类中实现日志功能(。j2ee项目实训spring框架技术——第6章aop和springaop技术第2部分
相关推荐
1、思卡尔”杯全国大学生智能汽车竞赛技 术 报 告学 校:北京科技大学队伍名称:北京科技大学一队参赛队员:张永康刘雪伟赵鑫鑫带队教师:张文明 杨珏思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料
列资料 杨教授工作室,版权所有,盗版必究 , 6/12 页 D:/SpringWebApp/WebRoot/WEBINF/。 ApplicationContext applicationContext = new FileSystemXmlApplicationContext(springXMLPath)。 userManagerImple = (UserManagerInterface)
1、1光纤通信的复用技术的研究摘 要 在光纤通信中,复用技术被认为是扩展现存光纤网络工程容量的主要手段。 复用技术主要包括时分复用 术、空分复用 术、波分复用术和频分复用 术。 但是,因为 般认为并没有本质上的区别,所以可以认为波分复用是粗分,而频分复用是细分,从而把两者归入一类。 关键词 波分复用( 空分复用( 时分复用( 频分复用(by of In it is is to to to to
1、 1前言随着越来越多的手持式电器的出现,对高性能、小尺寸、重量轻的电池充电器的需求也越来越大。 电池技术的持续进步也要求更复杂的充电算法以实现快速、安全的充电。 因此需要对充电过程进行更精确的监控,以缩短充电时间、达到最大的电池容量,并防止电池损坏。 经在竞争中领先了一步,被证明是下一代充电器的完美控制芯片。 处理器是当前市场上能够以单片方式提供10 位处理器。
1、第 1 页 共 18 页液体点滴速度监控装置摘要 该装置实时地监测液体点滴速度,通过单片机对信息的分析和处理,由主机发出相应的指令,调整系统的工作平稳,构成了一个高性能的闭环控制系统。 实现了对点滴输液速度的直观监测,同时对一些异常情况的出现可实施报警。 利用该装置还能通过主控平台对各个分立系统信息实施自动化、智能化的集中处理。 能方便、简易的操作和使用,对医疗具有很强的实用性。 关键词
1、 论 文专 业: 班级学号: 学生姓名: 指导教师: 天津工程师范学院本科生毕业设计路的研究及在信号产生中的应用LL 要摘要:随着科学技术的发展,锁相环于其在通讯、航海、军事等发面的广泛应用,研究锁相环电路的特性有助于了解和提高锁相环电路的性能指标,使其在各领域得到更为广泛的应用和推广,其具有很强的实际应用价值。 本设计基于数字锁相环式频率合成技术,采用控制单片机改变频率