




已阅读5页,还剩73页未读, 继续免费阅读
(计算机系统结构专业论文)长沙银行风险监测问题管理系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
东北大学硕士学位论文 摘要 摘要 日f i i 国内的银行业虽然已经丌展了多种形式的对外业务,但是银行内部的僻 理与监督机制却仍然处于原始模式,这使得银行业务部门常常遭受到定的j x l 蹬 l 可不能够及时有效的发现与控制。 中国人民银行长沙中心支行的内部风险监测系统就是为了在各部门r 常业务 活动中及时发现问题、提出警示、处理问题并据此对各部门的风险状况进行评估 而设计丌发的,问题管理系统是其中的一个子系统。 本文详细描述了整个问题管理系统的设计及实现过程。首先对整个内部风险 监测系统进行了整体介绍;接着介绍了采用的s p r i n g 框架及其核心概念一i o c , 并二灯 o c 的二种基本形式做了说明,对比了目前实现l o c 的框架,在表现层聚用 的j s t l 也进行了说明:然后是对问题管理系统的详细设计,并应用设计模式、l o c 并结合s p r i n g 的m v c 解决了在设计过程中考虑到的一些问题:其次应用s p r i n g 中的l o c 、事务处理、持久层封装等技术来实现问题管理系统,并对主要实现类 进行了说明;最后额外考虑了问题管理系统的附加功能数据库与x m l 文件的 导入导出和统计图表的生成并对开发过程中遇到的一些技术问题作了研究。奉系 统是基于s p r i n g 的i o c 模式开发的,因此具有很好的灵活性和可扩展性。 关键词:m v c ,s p r i n gf r a m e w o r k ,l o c ,持久层,事务处理,j s t l 东北大学硕士学位论文 a b s t r a c l a b s t r a c t a tp r e s e n t ,d o m e s t i cb a n k i n gh a sd e v e l o p e dm a n ye x t e r n a lb u s i n e s s e s ,s u c ha s e l e c t r o n i ce x c h a n g e ,i n s u r a n c e ,f u n de t c ,b u tm a n a g i n ga n ds u p e r v i s i n go p e r a t i o n so f b a n ka r es t i l li no r i g i n a lm o d e , w h i c hr e s u l t si nt h a to p e r a t i o nd e p a r t m e n tc a l ln o tf i n d a n ds u p e r v i s er i s ki nt i m e t h ei n t e r n a lr i s ki n s p e c t i o ns y s t e mo fc h a n g s h as u b b r a n c ho ft h ep e o p l e sb a n k o fc h i n ai sd e s i g n e da n dd e v e l o p e df o rf i n d i n gp r o b l e m si nt i m ed u r i n gb u s i n c s s a c t i v i t i e s ,c a u t i o n ,p r o c e s s i n gp r o b l e m sa n de v a l u a t i n gr i s ks t a t u so fd e p a r t m e n t si n b a n k p r o b l e mm a n a g e m e n ts y s t e mi so n es u b s y s t e mo fi t t h ew h o l ed e s i g na n di m p l e m e n tp r o c e s so fp r o b l e mm a n a g e m e n ts y s t e ma r e d e s c r i b e di n d e t a i l f i r s t l y , i n t e r n a lr i s ki n s p e c t i o ns y s t e mi si n t r o d u c e d ,s e c o n d l y , s p r i n gf r a m e w o r ka n dt h ec o r ec o n c e p t i o n - - l o ca r ep r e s e n t e d ,a n dt h eb a s i c t h r e e f o r m so fi o ca r ee x p l a i n e di nt u r na n dc o m p a r e dt h ee x i s t e dl o cf r a m e w o r k s ,j s t lo f e x h i b i t i o nl a y e ri si l l u s t r a t e dt o o t h i r d l y , t h ed e s i g no f p r o b l e m m a n a g e m e n ts y s t e mi s p r e s e n t e d ,d e s i g nm o d e ,l o ca n dm v co fs p r i n ga r ec o m b i n e dt os o l v ep r o b l e m s d u r i n gd e s i g n f o u r t h l y , i o co fs p r i n g ,t r a n s a c t i o np r o c e s s ,p e r s i s t e n c ee n c a p s u l a t i o n a n ds oo nt e c h n o l o g i e sa r ea p p l i e dt oi m p l e m e n tp r o b l e mm a n a g e m e n ts y s t e m ,a n dt h e m a i nr e a l i z a t i o nc l a s s e sa r ee x p l a i n e d f i n a l l y , s o m ea d d i t i o n a lf u n c t i o n s - - e x c h a n g e o fd a t ai nd a t a b a s ea n dx m lf i l e sa n de r e a t i o no fs t a t i s t i cc h a r ta r ec o n s i d e r e dt o i m p l e m e n t ,s o m et e c h n i c a lp r o b l e m sa n dr e s o l v e n t sd u r i n gd e v e l o p m e n ta r ea l s o p r e s e n t e d t h ep r o b l e mm a n a g e m e n ts y s t e mi sd e v e l o p e do nt h eb a s i so f l o cp a t t e r no f s p r i n gf r a m e w o r k ,s oi th a sg o o df l e x i b i l i t ya n de x t e n s i b i l i t y k e y w o r d s :m v c ,s p r i n gf r a m e w o r k ,l o c ,p e r s i s t e n c el a y e r , t r a n s a c t i o nm a n a g e m e n t , j s t i 。 i - 东北大学硕士学位论文 缩略语 缩略语 l o c a o p m v c o r m j t a h w e r s i o no f c o n t r o l 反转控制 a s p e c t o r i e n t e dp r o g r a m m i n g面向切面编程 m o d e lv i e wc o n t r o l l e r 模型视图控制器 o b j e c t r e l a t i o n a lm a p p i n g对象关系映射 j a v at r a n s a c t i o na p i j a v a 事务a p i v f 东北大学硕士学位论文 声明 独创性声明 本人声明所呈交的学位论文是在导师的指导下完成的。论文中取得的研究成 采除加以标注和致谢的地方外,不包含其他人已经发表或撰写过的研究成果,也 不包括本人为获得其他学位而使用过的材料。与我同工作的同志对本研究所做 的任何贡献均己在论文中作了明确的说明并表示了谢意。 本人签名:鞔磅 , ( :l n “ 日期: 及p 口正胀 学位论文版权使用授权书 本学位论文作者矛r l d h , 导教师完全了解东北大学有关保留、使用学 位论文的规定:即学校有权保留并向国家有关部门或机构送交论文的 复印件和磁盘,允许论文被查阅和借阅。本人授权东北大学町以将学 位论文的全部或部分内容编入有关数据库进行检索、交流。 ( 如作者和导师同意网上交流,请在下方签名;否则视为不同意。) 盖兰竺兰储擀:锄 签字日期: 及口d 亨jf :卫7一v v 、jq 1z 一 导师签名: 签字日期: 东北大学硕士学位论文 第l 章引言 第1 章引言 1 1 项目背景 随着我国信息化步伐的加快,越来越多的企业和单位开始通过网络进行信息 的交流和存储。与此同时,基于w e b 的软件构建技术越来越成熟,这使得人们更 加依赖网络进 j :业务交流,各行各业的业务活动通过网络来进行传递,已是一个 很普遍而又有效的形式。 目前国内的银行业虽然已经开展了多种形式的对外业务,如:电子汇兑、保 险、基金等,但是银行内部的管理与监督业务却仍然处于原始模式,这使得银行 内部、出务部门常常遭受到一定的风险而不能够及时有效的发现与监督。 该项目是中国人民银行长沙中心支行的内部风险监测系统。此系统足为了在 银行内各部门日常业务工作中及时发现出现的问题,记录银行内部各部门的工作 情况,以便能够控制产生风险的隐患。比如银行科技处的机房安全检查工作中可 能出现电源电压不稳、防火设施老化等安全隐患问题;电子设备的采购通过本系 统来约束并记录整个业务流程;而内审处可以通过该系统检查各部门业务流程和 【:作情况,当不符合规范时,可以产生问题并对问题定性,以及由各部门出现问 题的多少和问题性质的严重程度来确定其风险程度,并通过图表显示出来。 长沙中支内部风险监测系统力求将长沙中支现有的风险控制体系计算机化, 改造以往非实时现场检查为主的内控体系,将其升级为实时非现场检查为主的内 控监督体系,体现计算机处理海量数据,实时监控发现问题及流程控制的优势。 l 。2 项目总体设计架构 该系统通过将银行各部门的实际日常业务进行抽象,建立了一套基于业务的 风险评估体系,将整个长沙中支下各部门内的日常工作抽象为本系统中的工作事 项,并按工作事项中发现问题后对于内控风险的影响程度将赋予工作事项一定的 权重即分值。彼此业务类型相近的工作事项可以归为一个风险点,每种风险点依 据其重要程度的不同,确定其程度为一类、二类两种,工作事项下可以绑定工作 簿,工作簿是从日常工作中抽象出来的来源于各部门的各项业务工作中需要用到 的各种类型的工作簿、登记簿、表单等实物。 当然,一个部门内不是所有的工作都需要填写工作簿,我们也提供了呈阅仲 这种用于审批签字的特殊表单,呈阅件可以在一个业务流程内流转同时记录各人 查些盔堂堡主芏堡堕查 第1 章引言 第1 章引言 1 1 项目背景 随着我国信息化步伐的匀f j 快,越来越多的企业和单位开始通过网络进行信息 的交流和存储。与此同时,基于w e b 的软件构建技术越来越成熟,运使得人制更 肋依赖网络进行、i p 务交流各行各业的业务活动通过网络柬进行传递,已是一个 很普遍而又有效的形式。 目酊国内的银行业虽然已经开展了多种形式的对外业务,如:电子汇兑、保 险、基余等,但是银行内部的管理与监督业务却仍然处于原始模式,这使得银行 内部业务部门常常遭受到一定的风险而不能够及时有效的发现与监督。 该项目是中国人民银行长沙中心支行的内部风险监测系统。此系统是为了在 银行内各部门日常业务工作中及时发现出现的问题,记录银行内部各部门的工作 情况,以便能够控制产生风险的隐患。比如银行科技处的机房安全检奄工作中可 能出现电源电压不稳、防火设施老化等安全隐患问题:电子设备的采购通过本系 统来约束并记录整个业务流程:而内审处可以通过该系统检查各部门业务流程和 工作情况,当不符台规范时,可以产生问题并对问题定性,以及由各部、 出现问 题的多少和问题性质的严重程度来确定其风险程度,并通过图表显示出来。 长沙中支内部风险监测系统力求将长沙中支现有的风险控制体系计算机化, 改造以往非实时现场检查为主的内控体系,将其升级为实时非现场检杏为丰的内 控监督体系,体现计算机处理海量数据。实时监控发现问题及流程控制的优势。 1 2 项目总体设计架构 该系统通过将银行各部门的实际日常业务进行抽象,建立了一套摹于业务的 胍险评估体系,将整个长沙中支下备部门内的日常工作抽象为本系统中的工作事 项,并按工作事项中发现问题后对于内控风险的影响程度将赋予工作事项一定的 权重即分值。彼此业务类型相近的工作事项可以归为一个风险点,每科风险点依 据其重要程度的不同,确定其程度为一类、二类两种,工作事项下可以绑定工作 簿,工作簿是从同常工作中抽象出来的来源于各部门的各项业务上作中需要用到 的各种类型的工作簿、登记簿、表单等实物。 当然, 一个部门内不是所有的工作都需要填写工作簿,我们也提供了呈阅件 这种用 。暂批签字的特殊表单。呈阅件可以在一个业务流程内流转同时记录各人 这种用于审批签宁的特殊表单,呈阅件可以在一个业务流程内流转同时记录各入 东北大学硕士学位论文 第1 章引言 的j 真写意见,流程可根据呈阅件中各人的填写意见控制呈阅件的流转。图1 1 足 一个部fj 内的风险结构图: 吲11 部门山的风险结构圈 f i g 1 1 t h er i s ks t r u c t u r e i nd e p a r t m e n t 出于银行内对大宗物资的采购情况很重视,而且这方面涉及到的环节多、业 务流程复杂也很容易出现风险,所以在本系统中作为个单独的模块结合呈阆件、 j :作簿等相关模块来实现。 整个系统主要分为以下几部分:内控系统框架、组织机构管理、风险分析配 置、问题管理、统计分析、项目检查、调查问卷、规章制度、工作簿需求报告、 归档资料管理、工作任务、呈阅件、大额采购、内控新闻。 内控系统框架分为内控框架配置,内控参数配甓,内控框架审批三个模块。 其中,内控框架配置实现了风险点管理、工作事项管理、框架关系管理三种功能。 通过内控框架配置模块,内控管理人员和部门的内控员可以建立部门和单位的内 控管理体系;内控参数配置模块,用于配置内控系统运行过程中必需的参数,包 括设定行长主管部门,设定内控监督部门,部门角色分配等;内控框架审批模块, 在各部修改内控架构时,实现了内审处对于各部门修改活动的审批。 组织机构管理负责管理银行的组织机构,组织机构中有三种对象:机构、角 色和人员。机构下可以添加予机构、角色和人员,角色中可以包含很多人员。比 如,长沙中支内各部门是长沙中支的子机构,部门内的科室是所属部门的予机构, 角色包括系统管理员、机构管理员和普通人员。 l x l 险分析配置用于设定当内控系统通过人工或自动方式检查出问题后,问题 对于部门或风险点的分值影响程度,以及对部门或风险点进行评估时所依据的标 准。 问题管理主要负责在日常检查工作中发现问题后,记录、显示和定性问题。 该 q 题的整改人在看到问题后可以对问题整改,领导也可以督办给下级人员进行 黾 毫 毽 东北大学硕士学位论文 第1 章引言 整改,另外,r 级人员也可以将问题升级给上级领导。所以,问题管理可以分为: 问题警示、问题浏览、督察督办、问题定性、问题属性维护和问题产生。 统计分析可对单位或部门、风险点、工作事项、责任人的分值、扣分值、风 险状况、问题数、工作情况等,进行统计并绘制出统计表和统计图。统计分析j : 要分为:得分情况分析、扣分情况分析、风险状况分析、问题统计分析、部门 _ 。 作情况分析等。 项目检查功能实现了内审处和长沙中支的其他内控监督部门按步骤进行各部 门工作情况检查的功能。主要包括:检查方案制定、内审通知、任务分配、调测 清币、工作底稿、谈话记录、内审事实确认书、内审意见、综合检查列表、内拧 综合评估列表和综合报告等。项目检查功能为进行监督检查的部门提供了一个方 便易用的平台和工具,各部门可以对功能中提供的模板和步骤,按照部门的实际 情况进行一定程度的修改,方便各监督部门的使用。 f :作簿子系统主要完成内部风险监控系统中,日常工作记录的填写、签章和 保存等功能,以及完成内部风险监控系统的基础数据的产生、查询和管理功能。 在内控系统中,办理某些业务时,需要通过呈阅件的形式进行报批。整个报 流程中包括拟稿、签发、会签、领导批示四个环节。 大额采购实现了按照一定流程和要求分步骤的批量采购项目。这是一个相刘 比较独立的子系统,具有自己的人员角色和流程步骤。主要分为:角色管理、采 购需求、采购计划、采购实施、采购验收、资金结算、信息统计及归档管理和内 部峨督。 归档资料管理负责管理全行内控系统归档资料。档案库分为行级档案库和部 门档案库,行级档案库由行级档案管理员管理,部门档案库由各部门档案管理员 管理:各部f 档案可以移交到行级档案库。 陶1 2 是整个系统框架图: 东北大学硕士学位论文 第1 章引言 图1 2 内部风险监测系统框架图 f i g 1 2 t h es t r u c t u f ev i e wo f i n t e r n a lr i s ki n s p e c t i o ns y s t e m 我主要负责问题管理、统计分析、风险分析配置以及调查问卷子系统的设计 j 丌发。本文以问题管理予系统为例,介绍了问题管理子系统的整个设计与实现 过程,通过s p r i n g 框架及相关技术来解决其中遇到的问题。 1 3 本文主要内容 第1 章简要介绍了项目背景、项目总体的设计架构,并提出了作者在该项目 中负责的主要工作。 第2 章首先阐述了j 2 e e 体系的相关基本概念;然后介绍了s p r i n gf r a m e w o r k , 对其核心思想一i o c 进行了分类说明,通过对目前比较流行的框架对比,显示了 i o c 在克服组件耦台的问题上所具有的优势;同时也介绍了将要在项目中用到的 几种基本概念m v c 、持久层封装、事务处理,说明s p r i n g 框架在这些方面提供 的支持,另外介绍了一种表现层技术一j s t l ,并举例说明j s t l 中的表达式语言 如何简化界面开发的。 第3 章对问题管理系统进行了分析,首先介绍了系统目的及在内部风险监测 系统中的作用和地位,然后提出了系统中角色的分配、界面个性化等需求并针对 问题管理系统的各个功能详细描述了用户需求,针对这些需求将系统按照功能进 东北大学硕士学位论文 第1 章引言 行了模块划分,描述了每个模块应具有的实际功能。 第4 章首先设计了整个系统所采用的软件体系结构,提出了设计时应考虑的 蝗问题,并应用设计模式、i o c 和s p r i n g 的m v c 对这些问题进行解决,然后 刈整个问题管理系统分模块进行了洋细设计,包括数据库表的设计和类图设计, 在督察督办模块中还设计了时序图,来说明类之i 瑚如何协作完成各种督察督办功 能的,最后综合各个模块的设计思路,得出问题管理系统的总体设计类图。 第5 章利用第2 章提到的技术及第4 章的设计方案对问题管理系统进行分模 块实现,在表现层的实现上列出了所实现的j s p 文件及功能对照表,在业务层的 实现上列出了主要的类及方法并做了详细说明。其中督察督办模块的实现中实现 了定时轮询功能,来定时检查问题是否超期未整改,同时给出了流程型加以说明。 第6 章对问题管理系统的相关功能及技术问题作了研究,利用j d o m 实现了 问题记录的导入导出功能,解决了开发过程中遇到的中文问题,解决了j s p 日录 与s p r i n g 的f i 向控制器同名问题,并简要解释了如何利用j f r e e c h a r t 生成统计图。 第7 章总结全文,并提出了对未来工作的一些展望。 东北大学硕士学位论文 第2 章基本概念及相关技术介绍 第2 章基本概念及相关技术介绍 2 1 对象、组件与框架 类是对同r 类事物的抽象描述,其数据成员用于描述该类事物的属性,成员 函数完成修改、获取属性值或实现基于属性的某些操作,对象则是类的实例。 组件足指软件中的内在单元,可以提供相关的功能和服务。尽管可以在应用 软件中通过组件编写者允许的方式继承组件,借此来改变它的行为,但是组件的 源代码是不需要更改就能使用在应用软件中的。组件有明确定义的接口,可以止 该组件i = j 其他组件进行交互。组件是通过与其所处的环境的交互完成某种功能的, 组件模型定义了这种交互的规范9 j 。遵照同一个组件模型的组件,由于提供的接 口足一样的,因此可以互相替代i “。 通常认为:应用软件是由组件构建的,而组件是由对象构建的。这种看法不 完伞正确。因为组件的大多数特征,都能够由运行在轻量级容器中的对象所实现 粒度:通常认为组件的粒度比对象大,但是我们可以定义任意粒度的对象, 多个对象可以组合成新的对象。 封装:组件可以隐藏实现细节而暴露与内部实现截然不同的接口。但是如果 我们采用面向接口编程,同样可以隐藏对实现类的依赖。 配置:组件能够单独配置。对象也可以通过j a r 或w a r 配置来打包对象及 其依赖关系。 接f 勺实现的分离:组件是可替换的软件单元。对象可以通过轻量级容器提 供的服务来实现这种分离。 从以上分析来看,组件与对象之间的差别并不是很大。在本文中,组件和对 象是可互换的概念。 应用软件的业务逻辑是通过业务层中的多个业务组件之间的相互协作完成 的。业务组件之间的依赖关系越小,它们的重用性就越好,就更能适应应用软件 需求的变化。但是类作为太小的重用单元不能取得实际的期望收益【j ,框架提供 了一个概括的体系结构模板,我们可以用这个模板来构建特定领域中的应用程序。 换句话浣,框架允许通过指定、组合并重用元素,来有效的构建某些特殊的软件 系统。框架具有以下一些特征| 6 l : 1 、框架是由一些类和组件组成的。每一个类和组件都提供了对某种特定概念 东北大学硕士学位论文 第2 章基本概念及相关技术介绍 的抽象。 2 、框架定义了这些抽象类和组件如何协同工作来解决问题。 3 、框架组件可熏用。 2 2s p r i n g 技术及其核心思想i o c 简介 s p r i n g 是轻量级的j 2 e e 应用框架。供应用程序代码运行的框架可以定义为容 器,容器为应用程序对象( 通常是业务对象) 提供管理j ,轻量级容器就是指容器 提供的服务可选择1 2 ”j 。s p r i n g 的目标是实现一个全方位的整合框架,提供o n e s t o p s h o p 的框架整合方案| | ,使得组件甚至框架的整合变得容易。 s p r i n g 的核心概念是l o c ,i o c 的抽象概念是“依赖关系的转移”。例如:”高 级组件不应该依赖于低级组件,组件都必须依赖于抽象”是l o c 的一种表现,“应 用程序不应依赖于容器,而是容器为应用程序服务”也是l o c 的一种表现。l o c 的 概念与三种d i ( d e p e n d e n c yi n j e c t i o n ) 类型在m a r t i nf o w l e r 的( ( i n v e r s i o no fc o n t r o l c o n t a i n e r sa n dt h ed e p e n d e n c yi n j e c t i o np a t t e m ) ) 中得到清楚的阐释,s p r i n g 的核心 即足个i o c d i 的容器,它可以帮助程序设计人员完成组件( 类) 之j 列的依赖关系汴 入,使得组件( 类) 之间的依赖关系达到最小,进而提高组件的重用性。 s p r i n g 最引人注目的另一方面是支持a o p ( a s p e c t - o r i e n t e dp r o g r a m m i n g ) 。 a o p 是指将系统中各模块的共同关注点分离出来统一进行管理,这样不仅能够简 化系统丌发,而且更便于系统的扩展与测试。 s p r i n g 涵盖了应用系统开发所涉及的大多数技术范畴,包括m v c 、o r m 以 及r e m o t ei n t e r f a c e 等。s p r i n g 也可以与所熟悉的m v cw e b 框架结合,像是s t r u t s 、 w e b w o r k 等,成为适用于自己的解决方案。 s p r i n g 也提供其它方面的整合,像是持久层的整合,如j d b c 、o r mi i 具 ( h i b e r n a t e 、i b a t i s ) 、事务处理等等,s p r i n g 作了对多方面整合的努力,所以晚 s p r i n g 是个全方位的应用框架。 2 3l o c 原理及分类 j 2 e e 开发者常遇到的个问题就是如何组装不同的组件,并且提高组件的可 重用性。在这个背景下,出现了反转控$ 1 j ( i n v e r s i o n o f c o n t r o l ,i o c ) 。反转控制j 以把框架公用对象的创建和获得提取到外部。控制权由应用代码中转移到了外部 容器,控制权的转移就是所谓的“反转控制”。在j a v a 开发中,i o c 意味着将设计 好的类交给系统去控制,它的目标是实现组件的配置与使用相分离。 东北大学硕士学位论文 第2 章基本概念及相关技术介绍 s p r i n g 在实现i o c 时大量采用了j a v a 的反射机制,通过动态调用的方式避免 硬编码方式的约束l 引,并在此基础上建立了其核心组件b e a n w r a p p e r 和 b e a n f a c t o r y 。通过b e a n w r a p p e r 可以在运行时动态生成配置文件中定义的 j a v a b e a l l 对象并为其属性赋值,而这些对象之问的依赖关系是通过配置文件中的 1 ,点属性来确定的。通过b e a n f a c t o r y 可以管理容器中所有的j a v a b e a n 对象,包 括埘象的创建模式、初始化、引用、销毁等工作。 反转控制实现了调用者和被调用者之间的解耦,这不仅简化了编程而且可以 不考虑将来的具体实现。因此,i o c 模式可以为容器、框架之类的软件实现提供 了具体的实现手段,属于架构技术中一种重要的模式应用。 2 0 0 4 年1 月,m a r t i nf o w l e r 将反转控制重命名为依赖 注- ) m d e p e n d e n c y i n j e c t i o n ) 。依赖注入有三种方式:构造子注) , 。( c o n s t r u c t o ri n j e c t i o n ) 、设值注入 ( s e t t e ri n j e c t i o n ) g l 接u 注a ( i n t e r f a c ei n j e c t i o n ) 。下面通过举例来分别描述。 假设有一个组件用于提供一份由特定导演执导的电影清单 2 1 ) : p u b l i cc l a s sm o v i e l i s t e r p r i v a t em o v i e f i n d e rf i n d e r ; p u b l i cm o v i e l i s t e r ( ) f i n d e r = n e wc o l o n m o v i e f i n d e r ( ”m o v i e s l t x t ”) ; p u b l i cm o v e m o v i e s d i r e c t e d b y ( s t r i n ga r g ) f l i s ta l l m o v i e s = f i n d e r f i n d a l l o ; ) m o v i e f i n d e r 接口提供了一个用于查找所有影片清单的方法,它的一个具体实 现类c o l o n m o v i e f i n d e r 可以通过查找存储影片清单的 m o v i e l t x t ”文件来获取所 有影片清单。 在m o v i e l i s t e r 的构造方法中先实例化一个m o v i e f i n d e r 的具体实现类 c o l o n m o v i e f i n d e r 并赋值给f i n d e r 对象。m o v i e s d i r e c t e d b y 方法首先请求f i n d e r 对象,返回后者所知道的所有影片,然后遍历f i n d e r 对象返回的清单,并返回其 中由特定的某个导演执导的影片。 m o v i e s d i r c c t e d b y 方法依赖于f i n d e r 对象。如果采用完全不同的方式,例如 s q l 数据库、x m l 文件、w e bs e r v i c e ,或者另一种格式的文本文件来存储影片 清荦,就需要用另一个类来获取数据。由于已经定义了m o v i e f i n d e r 接口,可以 东北大学硕士学位论文 第2 章基奉概念及相关技术介绍 小用修改m o v i e s d i r e c t e d b y 方法。但是,仍然需要通过某种途径获得合适的 m o v i e f i n d e r 实现类的实例。图2 1 说明了在m o v i e l i s t e r 类中直接创建m o v i e f i n d e r 实例时的依赖关系。 目i 粤 图21在m o v i e l i s t e r 类中直接创建m o v i e f i n d e r 实例时的依赖关系 f i g 2 1 t h ed e p e n d e n c i e su s i n gad i r e c tc r e a t i o ni n s t a n c ei nt h em o v i e l i s t e rc l a s s 山图2 1 看出,m o v i e l i s t e r 类既依赖于m o v i e f i n d e r 接口也依赖于其实王见类 m o v i e f i n d e r l m p l 。通过依赖注入方式可以简化这种依赖关系,使m o v i e l i s t e r 只 依赖于m o v i e f i n d e r 接v i ,而不用关心其具体实现类的产生。d e p e n d e n c yi n j e c t i o n 模式的基本思想是:用一个单独的对象( 装配器) 来获得m o v i e f i n d e r 的个合适的 实现,并将其实例赋给m o v i e l i s t e r 类的一个属性。这样,新的依赖关系如图2 2 : 甲- :颦 雪一一一一j 圉 图2 2 引入依赖注入器之后的依赖关系图 f i g22 t h ed e p e n d e n c i e sf o rad e p e n d e n c yi n j e c t o r 由图2 2 看出,依赖注入器a s s e m b l e r 负责生成具体m o v i e f i n d e r i m p l 实例并 转型为m o v i e f i n d e r ,它能够将将生成的实例注入进m o v i e l i s t e r 中,从而使得 m o v i e l i s t e r 只依赖于m o v i e f i n d e r 接1 2 1 ,减少了m o v i e l i s t e r 的依赖关系。 2 3 1 构造子注入 p i c oc o n t a i n e r 中使用的注入方式就是构造子注入。p i c oc o n t a i n e r 通过构造 于来判断“如何将m o v i e f i n d e r 实例注入到m o v i e l i s t e r 类”。因此,m o v i e l i s t e r 类 必须声明。一个构造子,并在其中包含所有需要注入的元素: p u b l i cc l a s sm o v i e l i s t e r r 东北大学硕士学位论文 第2 章基本概念及相关技术介绍 p r i v a t em o v i e f i n d e rf i n d e r ; p u b l i cm o v i e l i s t e r ( m o v i e f i n d e rf i n d e r ) t h i s f i n d e r = f i n d e r ; m o v i e f i n d e r 实例本身也将由p i c oc o n t a i n e r 来管理。p i c oc o n t a i n e r 不支持通 过配置文件束获得配置信息,可以使用另一种容器n a n oc o n t a i n e r 来解析x m l 文件,并对底下的p i c oc o n t a i n e r 进行配置。 2 3 2 设值注入 s p r i n g 更适合于注入方式。利用j a v a b e a n 的s e w e r 方法将外部组件注入,也 u j 以将m o v i e f i n d e r 的实现类对象注入。注入动作是通过容器进行的。 p u b l i cc l a s sm o v i e l i s t e r p r i v a t em o v i e f i n d e rf i n d e r ; p u b l i cv o i ds e t f i n d e r ( m o v i e f i n d e rf i n d e r ) t h i s f i n d e r = f i n d e r ; 影片清单的存放文件名称也可以通过这种方式注入到c o l o n m o v i e f i n d e r 中。 齐器通过读取配置文件生成所需的对象,并注入到相应的组件中。s p r i n g 绩常用 的是x m l 格式配置文件,s p r i n g 容器读取该配置文件,并初始化其中配置的每 个b e a n 。i d 是这个b e a n 的唯一标识,c l a s s 指出了该b e a n 的位簧,p r o p e r t y 告诉 容器需要对这个b e a n 设置哪些属性。例如,m o v i e l i s t e r 的属性f i n d e r 需要被容器 设臀注入,注入的是另外一个b e a n 对象m o v i e f i n d e r 。通过这种方式,我们自己 的组件就可以直接使用其它组件,降低了组件之间的祸合性,而且可以很容易的 实现组件的替换。 2 3 3 接口注入 除了前面两种注入技术,还可以在接口中定义需要注入的信息,并通过接川 完成注入。a v a l o n 和w c b w o r k 2 框架就使用了类似的技术。 首先需要定义一个接口。组件的注入将通过这个接口进行。在本例中,这 个接口的用途是将一个m o v i e f i n d e r 实例注入继承了该接口的对象。 p u b l i ci n t e r f a c ei n j e c t f i n d e r p u b l i cv o i di n j e c t f i n d e r ( m o v i e f i n d e rf i n d e r ) ; 东北走学硕士学位论文 第2 章基本概念及相关技术介绍 任何想要使用m o v i e f i n d e r 实例的类( 例如m o v i e l i s t e r 类) 都必须实现返个 接厂1 。然后,使用类似的方法将文件名注入m o v i e f i n d e r 的实现类。i 司样,这种 注入方式也需要一些配置信息来告诉容器如何注入。 2 3 4 几种注入方式比较 构造子注入和设值注入的优点主要在于只需要非常简单的约定,而接门注入 的侵入性要强得多。所以,构造子注入和设值注入,可以使注入器相当轻松地把 所有东西配置起来。m a r t i nf o w l e r 提到:“如果要选择一个容器进行开发,我建议 你选择同时支持这两种注入方式的容器”。s p r i n gf r a m e w o r k 采取的正是构造 子注入和设值注入相结合的方式。 构造子注入,在构造期即创建一个完熬、合法的对象。意味着可以在构造函 数中决定依赖关系的注入顺序,对于一个大量依赖外部服务的组件而言,依赖关 系的获得顺序可能非常重要。但是,如果参数太多,构造予会显得凌乱不堪。 设值方法注入,可以在每个设值方法的名字中说明参数的用途:而使用构造 了注入时,你只能靠参数的位置来决定每个参数的作用,而记住参数的! f 确位置 显然要困难得多。 从以上例子可以看出,依赖注入的最大好处在于:它消除了m o v i e l i s t e r 类划 具体m o v i e f i n d e r 实现类的依赖。这样一来,凡是使用m o v i e l i s t e r 类的人,都 呵以根据自己的环境插入一个台适的m o v i e f i n d e r 实现即可。 2 1 3 5i o c 框架对比 目前,已有几种实现了i o c 的框架。下面简要介绍三种i o c 的框架并进行简 单的对比。 2 3 5 1p i c o c o n t a i n e r p i c o c o n t a i n e r 是一种轻量级容器,通过实现构造子注入来解耦合组件之问的 依赖关系。p i c o c o n t a i n e r 在组件管理方面的主要优点是:不需要使用类似x m l 之类的配置文件来定义组件之间的依赖关系。因此,导致了一些致命的缺点: 1 、没有具体组件实例的概念,对于每种类型只有一个实现类孙1 。因为 p i c o c o n t a i n e r 对于每种类型只能注册一个实例。 2 、 客户组件必须将所有用到的服务组件通过参数的形式注入。如果需要组 件数目很多,会造成构造子凌乱。而且在初始化容器时,需要通过构造 东北大学硕士学位论文第2 章基本概念及相关技术介绍 于参数的位置和类型来确定待注入的服务组件,这显然是很困难的。 2 3 5 2a v a l o n a p a c h e 的a v a l o n 是一个包括核心框架、工具、组件和容器的面向组件编程 ( c o p ) 的完整丌发平台。a v a l o n 采用l o c 中的接u 注入方式柬进行组件之i h j 的解 耦台。侄a v a l o n 中,客户组件通过s e r v i c e m a n a g e r 来查找服务组件,这种方法具 有一定的侵入性。因为每一个想要获得服务组件的客户组件都必须实现a v a l o n 接 口,而且查询接口也是基于服务接口的。如果想获得一个具体实例,还必须使用 s e r v i c e s e l e c t o r 一这是另一种特殊机制。 由此可以看出,a v a l o n 框架提供的组件管理对应用程序组件具有一定的侵入 性,而且不够灵活。 2 3 5 3s p r i n g s p r i n g 结合了构造予注入和设值注入方式来实现业务组件解耦合。而且通过 配置文件的方式定义组件之间的依赖关系。 s p r i n g 在组件管理方面的优点有: l 、 基于j a v a b e a n 对组件进行管理,使得组件依赖关系的描述能够统一。 2 、 造子注入和设值注入的结合,使组件依赖解耦合有很大的灵活性。 3 、以根据配置文件来由框架负责服务组件的产生。 4 、 s p r i n g 提供的灵活的l o c 实现,能够很容易的集成各种服务组件,并由 框架在运行时提供服务简化了业务逻辑代码。 s p r i n g 为我们提供了另一种注入方式:方法注入。它包括两种注入方式j ”i : 1 、l o o k u p 方法注入。l o o k u p 方法注入使用到了容器能够重写容器中b e a n 的抽象或具体方法的能力,返回对容器中其他b e a n 的查找的结果。在客 户端的c l a s s 包含需要注入的方法,其中,方法定义必须是抽象( 具体) 定 义。如果方法不是抽象的,s p r i n g 就会直接重写已有的实现。在x m l b e a n f a c t o r y 的情况下,可以使用b e a n 定义中的l o o k u p m e t h o d 属性来指示 s p r i n g 去注入重写这个方法以便从容器返回一个特定的b e a n 。 当m y b e a n 需要一个新的s i n g l e s h o t h e l p e r 实例的时候,它就会调用它自 己的c r e a t e s i n g l e s h o t h e l p e r 方法。l o o k u p 方法注射能够同构造函数注射结龠 ( 对创建的b e a n 提供可选的构造函数参数) ,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职学校德教工作在校园文化建设中的角色和作用研究
- 企业内部沟通渠道的优化与拓展
- 团队协作中的时间管理与效率提升
- 企业风险管理流程优化策略
- 学校课堂管理与学生纪律的培养
- 实验室设计与布局规划
- 中国科技企业的国际化发展之路
- 二零二五版车辆无偿出租协议书
- 二零二五版委托拍卖协议书范例
- 企业员工满意度提升策略研究
- 2024年广东惠州仲恺高新区招聘中学教师笔试真题
- 马化腾的创业故事
- 高中主题班会 心怀感恩志存高远课件-高一上学期感恩教育主题班会
- 2024年晋城市城区城市建设投资经营有限公司招聘考试真题
- 社工证笔试题库及答案
- 高考写作专项突破之核心概念阐释要诀 课件
- 2025年全国质量月活动总结参考(2篇)
- 口腔四手操作培训
- 2025年月度工作日历含农历节假日电子表格版
- 第37章 真菌学概论课件
- 总裁助理岗位职责
评论
0/150
提交评论