




已阅读5页,还剩60页未读, 继续免费阅读
(计算机应用技术专业论文)java轻量级框架在职业鉴定系统中的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 随着i n t e r n e t 和w e b 技术的广泛应用,越来越多的企业迫切需要高效地构建自己 的w e b 应用系统。近年来,s u n 公司的j 2 e e 平台凭借j a v a 语言的诸多特性和企业软件 开发中的种种经验,成为企业级w e b 应用开发的主流技术之一。j 2 e e 为开发分布式、多 层的企业级应用定义了一套完整的标准,然而对于大多数的中小型w e b 企业应用来说, j 2 e e 还存在很多不足,如开发、部署、测试复杂,不同的j 2 e e 服务器间兼容性不好等。 因此,很长一段时间企业都在寻求j 2 e e 的替代产品。本文正是在分析了传统j 2 e e 技术不足的同时,给出一种特别适用于中小型企业开发的轻量级解决方案一一集成开源 轻量级框架s p r i n g 和h i b e r n a t e ,并用它来设计开发武钢职业技能鉴定管理系统。此轻 量级解决方案严格基于分层的多层体系结构思想,在表示层使用s p r i n gm v c 与j s t l 标 签、s p r i n g 标签技术,业务层采用s p r i n g 框架,数据持久层使用业界最好的j a v a 对象 持久化框架h i b e r n a t e 。 在企业级w e b 系统开发时选用这种轻量级框架整合方案,不仅避免了传统j 2 e e 开 发的繁琐,而且可以有效地发挥各领域最优秀的技术,创建更加高效、协调的应用程序。 这种轻量级框架将业务逻辑、应用程序控制和数据显示等功能模块区分开来,使得程序 员可以集中精力分别开发任意模块而不用再担心耦合问题,提高了应用程序的柔韧性, 使得整个系统的开发有条不紊、容易集成、便于维护和升级。经过试验运行,结果证明 利用该方案开发的武钢职业技能鉴定管理系统开发快速,部署简单,各项技术性能指标 均达到了设计要求。 论文首先对传统j 2 e e 技术和轻量级框架技术进行了深入分析和比较,得出轻量级 框架具有开发速度快、配置简单、易学易用等优点;然后针对目前市场上占有绝对优势 两种轻量级开源框架一- - s p r i n g 和h i b e r n a t e 进行深入研究,最后以武钢职业鉴定管理 系统权限管理模块为实例,论述了基于轻量级框架s p r i n g 和h i b e r n a t e 开发的具体实 现。 关键字:轻量级框架,s p r i n g ,h i b c m a t e ,i o c ,a o p ,m v c ,o s t a a b s t r a c t w i t ht h ee x t e n s i v ea p p l i e do fi n t e r a c ta n dw e b m o r ea n dm o r ee n t e r p r i s e se a g e r l y r e q u i r et oe f f i c i e n t l yd e s i g no w n s o f t w a r ea p p l i c a t i o n sb a s e do nw e b i nr e c e n ty e a r s o w i n g t ot h em a n ys p e c i a l i t i e so f j a v aa n da uk i n d so fe x p e r i e n c eo fe n t e r p r i s es o f t w a r e d e v e l o p m e n t , j 2 e eo fs a nm i c r o s y s t e mc o r p b e c o m e so n eo ft h em o s tp r e f e r r e dp l a t f o r m so f e n t e r p r i s ed e v e l o p m e n t j 2 e ed e l e sas e to fc o m p l e t es t a n d a r d sf o rd e v e l o p i n gd i s t r i b u t e d , m u l t i l a y e re n t e r p r i s es o f l w a r e s b u tf o rt h em a n ym i d d l e s m a l l - s c a l ee n t e r p r i s es y s t e m s b a s e do nw c b ,j 2 e eh a sm a n yd e f i c i e n c i e s ,s u c ha st h ec o m p l e x i t yo fd e v e l o p i n g , d e p l o y i n g a n dt e s t i n g , a n db a dc o m p a t i b i l i t i e so f j 2 e es e i n e r s s o ,i t sal o n gt i m et h a te n t e r p r i s e se x p l o r ear e p l a c e m e n to fj 2 e e b ya n a l y z i n g t r a d i t i o n a lj 2 e et e c h n o l o g y ,t h i st h e s i sp r o v i d e dau g h t w e i g h td e v e l o p m e n ts o l u t i o n i n t e g r a t e ds p r i n ga n dh i b e r n a t e ,w h i c hi se s p e c i a l l ys u i t a b l ef o rt h em i d d l e - s m a l l - s c a l e e n t e r p r i s e sa n da p p l i e dt ow u g a n go c c u p a t i o n a ls k i l lt e s t i n ga u t h o r i t ys y s t e m s t r i c t l y b a s e do nt h ec o n s i d e ro fl a y e r e dm u l t i - l a y e ra r c h i t e c t u r e ,t h es o l u t i o nm a k e du s eo fs p r i n g m v c , j s t la n ds p r i n gl a b l ei np r e s e n t a t i o nl a y e r , a d o p t ss p r i n gl o ci nb u s i n e s sl a y e ra n d l a s ti np e r s i s t e n tl a y e ru s e sm o s tp o p u l a rj a v ao rm 印p i n gt o o lh i b e r n a t e m a k i n gu s eo fi n t e g r a t e dl i g h t w e i g h tf r a m e w o r kt od e v e l o pe n t e r p r i s ea p p l i c a t i o nb a s e d o nw c b ,i t 伽a v o i dt r a d i t i o n a lj 2 e e c o m p l e x i t ya n db u i l de f f i c i e n ta n dc o r r e s p o n ds o f t w a r e , i t 啪a l s os e p a r a t e sf u n c t i o no fb u s i n e s sl o g i c , s y s t c mc o n t r o ll o g i cf r o md a t ar e n d e rt h a ta r e m o s t l yc o n c e r n e db yp r o g r a m m e r a n da tl a s tt h es y s t e md e v e l o p e dw i t hi th a sc h a r a c t e r e so f l o o s ec o u p l i n g , h i g hr e n s e a b l e ,g o o de x p l a n t a t i o na n de x t e n s i o na n ds oo n t h r o u g hr u n n i n g , i tp r o v e st h a tt h ef u n c t i o no fw u g a n go c c u p a t i o n a ls k i l lt e s t i n ga u t h o r i t ys y s t e mh a s r e a c h e dd e s i g nr e q u i r e m e n t sb y m a k i n gu s eo ft h es o l u t i o n f i r s t l y ,b yc o m p a r e i n gt r a d i t i o n a lj 2 e et e c h n o l o g yw i t hl i g h t w e i g h tf r a m e w o r k , t h i s t h e s i sd r e wac o n c l u s i o nt h a tl i g h t w e i g h tf r a m e w o r kh a sc h a r a c t e r i s t i c so fd e v e l o p e df a s t l y , c o n f i g u r e ds i m p l e ,a n de a s yt ou s e t h e nt h et h e s i st h o r o u g h l yi n t r o d u c e do p e nf r a m e w o r k s o fs p r i n ga n dh i b e r n a t e a tl a s ti ti m p l e m e n t e dt h ea u t h o r i t ym a n a g e m e n tm o d u l eo f w u g a n go c c u p a t i o n a ls k i l lt e s t i n ga u t h o r i t ys y s t e m ,b a s e do ns p r i n ga n dh i b e r n a t e k e yw o r d s :l i g h t w e i g h tf r a m e w o r k , s p r i n g ,h i b e r n a t e ,l o c ,a o p ,m v c , o s t a 此页若属实,请申请人及导师签名。 独创性声明 本人声明,所呈交的论文是我个人在导师指导下进行的研究工 作及取得的研究成果据我所知,除了文中特别加以标注和致谢 的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得武汉理工大学或其它教育机构的学位或证书而使 用过的材料与我一同工作的同志对本研究所做的任何贡献均已 在论文中作了明确的说明并表示了谢意 研究生签名;盔蠢丕日期竺堕生研究生签名:盈交益日期兰型篁 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定, 即:学校有权保留送交论文的复印件,允许论文被查阅和借阅; 学校可以公布论文的全部内容,可以采用影印、缩印或其他复制 手段保存论文 ( 保密的论文在解密后应遵守此规定) 研究生签名:鸯蠡参导师签名:l i 3 翌! 兰日期2 塑z :釜: 注;请将此声明装订在学位论文的目录前。 武汉理工大学硕士学位论文 1 1 课题研究背景 第1 章引言 当今世界瞬息万变,尤其以i n t e r n e t 为主导的信息技术更是层出不穷。随之而来, 企业构建基于b s 模式应用系统的需求也越来越紧迫。在当今众多b s 模式开发技术中, s u n 的j 2 e e ( j a v a2e n t e r p d s ee d i t i o n ) 技术可谓是企业软件开发的最佳选择,在市场上 也占有较大的份额。实际上,j 2 e e 技术是一个非常广泛的组件技术。按照s u n 公司的 定义,将它分为1 3 种组件技术1 1 】:j d b c 、j n d i 、e j b 、r m i 、j s p 、j a v as e r v l e t s 、 x m l 、j m s 、j a v ai d l 、j t s 、j t a 、j a v a m a i l 和j a f 。不难看出从简单的j s p 技 术到复杂的f _ j b 技术,j 2 e e 无所不包,这也是j 2 e e 被广泛使用的重要原因。 当然,凡事必有弊端一面,当前j 2 e e 中普遍存在着程序可重用程度低、维护工作 繁琐、应变能力较弱等不足。首先是j s p 的应用过于简单,且h t m l 代码与j s p 代码 混合在一起,没有实现很好的分离,对日后的维护以及升级都很困难。另外就是基于 e j b 的企业应用又过于复杂,e i b 规格中规定的许多条条框框,都必须严格遵守;而且 不同的e j b 服务器兼容性不是很好,移植起来非常麻烦。可以说j 2 e e 整体的框架趋于 两个极端,不能很好的满足中间这层的应用。事实上大量的企业级应用既没有复杂到必 须使用e j b ,也没有简单到只需使用j s p 就可以解决问题。 为了降低传统j 2 e e 的复杂性,开发人员不断寻找更简单的e j b 替代品,探索如何 使各层之间密切配合完成最终功能,又尽可能的在实际开发中使各层的开发相对独立, 减少各层之问的藕合程度,避免开发人员相互制约。正是在这一大背景下,j a v a 界诞生 了轻量级框架。所谓轻量级框架是相对于传统j 2 e e 重量级框架而言的。这里的轻,可 以理解为开发简单、重用性好、易测试、可移植性好等特点。 轻量级框架满足了当前大多数企业应用的迫切需要,其一诞生就受到无数人追捧。 如今轻量级框架的发展已经成为推动j 2 e e 技术发展的重要推动力,成为下一代j 2 e e 技术构架的基础1 2 1 1 3 1 。轻量级框架使用了大量人们熟知的开发模式,使得人们可以更加 放心的使用。在实际的开发中,通常都是将众多轻量级框架整合使用,例如利用h i b e r n a t e 框架实现数据持久化,s p r i n g 框架处理系统业务逻辑,s t r u t s 框架作视图显示、数据验 证有效性等。 1 武汉理工大学硕士学位论文 1 2 研究现状 从过去3 年可以看到,轻量级框架作为传统e j b 架构的替代品,发展非常迅速。轻 量级框架所采用的依赖注入d i ( d e p e n d e n c yi n j e c t i o n ) 、面向接口编程逐渐发展为面向 对象的主流开发方法,对软件编程产生了重大影响,许多过去已有的重量级版本实现也 都在考虑使用轻量级改版。 目前,轻量级框架的发展非常快,同类型的框架不断有新框架推出。基于w c b 应用的轻量级框架朝着3 个层面发展:表示层,典型代表是s t r u t s 、w e b w o r k s 、s p r i n g m v c 、j s f ;业务层,典型代表是s p r i n g 、h i v e m i n d 、p i c o c o n t a i n e r :数据持久层,典 型代表是i b a t i s 、h i b e r n a t e 。它们完全涵盖了w e b 应用程序的所有方面,是未来w c b 应用的发展趋势。 轻量级框架最早是在o p e ns o u r c e 社区得到了广泛的认可,因此具有广泛的用户群。 在从先驱s p r i n g 、h i b e r n a t e 到面向方面编程,再到现在的e j b 3 0 规范,轻量级框架逐 步成为主流。轻量级框架作为下一代j 2 e e 构架的基础有着无法比拟的优势: 通过使用控制反转技术i o c ( i n v e r s i o no f c o n t r 0 1 ) ,对象依赖解析不需要开发 者写复杂的代码来实现查找、异常处理和消息链接功能,代码更简单,业务逻 辑也从基础结构独立出来,易于维护; 轻量级j a v a 不强迫业务对象受控于平台特殊的接口,这是因为开发者将应用服 务和域对象模型设计成简单j a v a 对象,让j a v a 简单对象实现业务逻辑,可以 重用良好的应用组件,提高效益的同时更加易于测试; 已存在的轻量级容器框架,绝大部分来自o p e ns o u r c e 社区,对于掌握这项技 术降低了门槛。, 现在轻量级框架已经广泛地应用在很多场合,例如银行、基于事务的w e b 应用和 消息中间件、科学研究、培训机构,高容量的w c b 系统、网格计算等;而且一些大型 厂商也开始在不同的工业和技术场合使用轻量级框架。 1 3 课题来源 随着互联网技术的不断发展,网络已经成为人们生活和工作中不可缺少的组成部 分,那么利用网络来处理信息已成为一个必然事实。而且,近年来随着我国职业技能鉴 定事业的蓬勃发展,职业鉴定规模的扩大以及鉴定人数的大幅增加,考务管理的信息量、 工作量也大大的增加了,对鉴定中心如何进行科学化,现范化的管理引起了教育部门的 高度重视。计算机技术及信息处理技术的飞速发展,考务管理的规模和功能的迅速扩大, 2 武汉理工大学硕士学位论文 都要求职业技能考务管理系统从原来的单功能向多功能发展,并逐步走向系统化、综合 化、标准化和网络化。 本课题来源于武钢职鉴所职业技能鉴定系统。武钢是全国第三大的钢铁公司,公司 内部有不同级别技术工人,为满足员工自身技能不断的提高,适应企业战略转型和精确 化管理的需要,应对市场的激烈竞争,提高员工积极性,提高公司效益,就需要拥有一 定的职业鉴定管理平台,一套权威的,行之有效的职业技能鉴定管理系统。 但是当前的一些职业鉴定系统几乎都是单机版的,或者是一种c s 结构的,过于简 单,且功能过于单一存在一定的局限性。这种模式的系统优点是速度比较块,缺点是升 级维护不便。现在计算机技术及网络技术的迅猛发展,使得开发基于b s 模式的职业技 能鉴定系统已成为必然。前面已经介绍,在开发b s 模式的企业系统中,基于j a v a 的轻 量级框架已成为目前开发的首要选择。所以本文将采用流行的j a v a 轻量级框架建立一套 科学的、有效的、功能强大的、涵盖所有鉴定过程的一体化信息化的鉴定系统,实现公 司内部各个单位和部门之间信息的共享和数据的处理,大大提高了职业技能鉴定所工作 的顺利进行。 1 4 研究内容 在日益激烈的w e b 应用开发领域,准确地、经济地、高效地开发应用系统显得尤 为重要。其中最好的一个解决办法就是降低系统结构的复杂性,最近的几次j 2 e e 变革 也都是针对于此问题。从早期的s t r u t s 诞生,解放了用户表示层的复杂性,到h i b e r n a t e 的产生解放了手工创建复杂j d b c 复杂的问题,而s p r i n g 的产生则从根本动摇了e j b 最引以为豪的事务机制。 基于此,本文研究使用轻量级框架开发w e b 系统的必要性以及在使用过程中的可 行性,并研究了2 种最著名的轻量级框架一- - s p r i n g 和h i b e r n a t e ,提供了二者整合使用 的一套机制,为开发人员提供了一种可以解决众多w e b 问题的典型技术方案。 论文组织结构如下: 第一章本章为引言,主要介绍基于j a v a 轻量级框架的w 曲应用的现状及问题。从 整体上介绍了课题的研究背景,阐明本文的研究目的及主要工作内容。 第二章详细介绍了框架相关概念,以及利用框架进行开发的优势,概述了传统j 2 e e 进行w c b 应用开发的背景、现状和弊端,以及在此基础上讨论轻量级框架及其特点, 并将它们作比较得出述轻量级框架相对于重量级框架开发的优势。 第三章研究了2 种常用的轻量级框架s p r i n g 和h i b e r n a t e ,对其核心机制i o c 、a o p 、 o r m 作了透彻分析,并对它们之间的互相支持整合做了比较。 3 武汉理工大学硕士学位论文 第四章介绍了武钢职业鉴定管理系统的需求分析和总体设计思想。 第五章从分层的体系结构角度,详细讲解了如何使用s p r i n g h i b e r n a t e 轻量级框 架实现w e b 模式的武钢职业鉴定系统,对其设计思路、开发流程及部署方法作了详细 介绍。 第六章对论文的主要工作进行总结,并对下一步的工作提出了展望。 4 武汉理工大学硕士学位论文 2 1 框架概述 第2 章轻量级框架 框架是预制在软件组件中的集合,可以让程序员自由使用 4 1 1 5 1 ,通常提供了一个好 的程序模型,规定开发者必须按照某种规范或模板进行设计。框架实际上是某种应用的 半成品1 6 1 ,是一组组件,封装了底层的结构,具有一定的生命周期;也可将它当成是一 种工具,为应用提供结构和服务。框架不像i d e 或者编译器那样,它通常随着应用程序 一起部署和发布。甚至可以说,应用程序结构象什么或者应用服务象什么,完全依赖于 特定的框架。 框架都是诞生在现实开发中,好的应用框架为应用程序提供了可信赖的设计模式和 良好代码结构,对许多通用的设计模式都有了很好的实现,并且该实现可应用于多个场 合,也就是重复使用。框架通常具有如下几个特点1 7 l s l l 9 j : 框架是面向特定领域的可复用软件制品; 框架反映了应用的体系结构; 框架由许多的类或组件组成,每一个类或组件对一些具体的概念提供了很好的 抽象; 框架定义了这些抽象类如何协作,并依此解决某一类问题; 框架的组件可重用; 在更高一层,框架形成了设计模式。 在应用框架进行实际开发时,开发者不需要关注这些,只要集中精力在基于框架之 上的应用与业务逻辑设计即可,即开发者只要利用应用模板加入针对特定应用的处理代 码,就可得到一个新的应用系统【堋。框架往往都是资深程序员所设计,他们最理解普通 程序员的需求、问题,然后就将这些普遍的问题封装起来,将复杂的问题简单化。框架 一般结构良好,扩展性、可重用性也很高,而且是不断升级的,开发者可以直接享受升 级代码带来的好处【1 1 】。所以,在当今软件日益复杂、竞争非常激烈的现实世界,采用使 用成熟的、广为人知的框架使得在项目开发中无须每次从头开始,可以大大降低应用开 发的成本,节约大量的开发时间,更为重要的是在开发过程中也不会发生重大错误。 框架具有如下作用: 为构建企业组件提供指导方针: 定义了各组件间如何良好合作; 5 武汉理工大学硕士学位论文 确保代码一致性; 使得程序员更专注于业务逻辑。 如果一个框架在应用时强加太多的“必须”在里面,强迫使用者使用大量不喜欢的 东西,这种框架通常被称为重量级框架,如典型的e j b 。e j b 容器做了大量的事情,如 事务机制、安全访问权限以及分布式运算等问题;而且不同的e i b 容器实现机制又大相 径庭,使得移植起来非常困难。 2 2 传统j 2 e e 弊端 传统的j 2 e e 应用1 1 2 1 1 3 j 主要是两种技术场合:一种是j s p 、s e r v l e t 模式,适用于中 小企业快速开发的场合;另一种是以f _ j b 为主的复杂的、分布式的、对安全性要求很高 的场合。前者过于简单,又没有比较好的设计模式,且将j a v a 代码与h t m l 代码混合 使用,不便于升级与维护。这种使用方式与旧式的a s p 相比并没有多大优点,完全没 有体现出j a v a 的优势。后者则过于复杂,e j b 的本质是为网络分布式、事务而设计的, 在基本组件模型中内置了这些功能,这些使得其过于复杂。 实现表示层和业务层分离,是j 2 e ew e b 应用一直以来的理想。可惜j s p 并没有真 正实现这个目标,j s p 仍然是脚本式开发的w e b 技术,在j s p 页面中混淆了大量用于显 示逻辑的h t m l 和用于业务逻辑的j a v a 代码,使得页面设计与程序开发无法分离。 t a g l j b 作为j s p 的补充,将j a v a 代码从j s p 中剥离,但这只是有限地实现了表现与逻 辑的分离,始终没有摆脱代码和h t m l 页面揉和的本质问题。此外,j s p 还存在着其它 固有的缺陷,例如对应s e r v l e t 编译的出错信息很难在j s p 中找到准确的出错位置,由 此也给调试带来很大困难。 由于f j b 设计的过于复杂,遵循太多的规范,使得调试以及部署起来都很困难。它 为了满足少数情况下的特殊要求,给大多数使用者强加了不必要的复杂性。它过于依赖 f _ j b 容器,事实上也正是由于e j b 容器实现了太多的功能,才使得e j b 看似强大。而各 大e j b 容器厂商为了赢得竞争,纷纷都对e j b 标准进行了扩展,这就使得应用程序在 不同容器之间部署差别很大,可移植性也不好。f _ j b 具有有如下缺点【1 4 】【1 5 l : e j b 模型过度的复杂,虽然被设想为是降低复杂度,实现业务逻辑,但实际上 在这方面它并没有成功; e j b 模型需要建立许多组件接口和实现许多不必要的回滚方法; e j b 的部署描述复杂而且容易出错,开发人员不能脱离e j b 容器测试; e j b 实际上其本质是为网络分布式事务应用而设计的,然而,几乎所有的普通 应用也是事务的,所以分布式不应该内嵌在基本组件模型中; 6 武汉理工大学硕士学位论文 作为一种持久化机制,e n t i t yb e a n 的尝试也是彻底失败的; 与其它j 2 e e 技术相比,使用e j b 的应用程序更加缺乏不同应用服务器之间的 可移植性。 轻量级框架的发展极大的推动了j 2 e e 技术的发展,作为j 2 e e 核心技术的重量级 e j b ,也得到了很大的发展。j c p ( j a v ac o m m u n i t yp r o c e s s ) n 订的e j b 3 o 标准框架做了 相应的改进,该框架为所有主要的j 2 e e 厂商支持。e j b 3 0 和s p r i n g 两个框架结构都有 一个共同核心设计理念:将中间件服务传递给耦合松散的p o j o s 。所以现在e j b 3 0 也 加入了轻量级框架中。 在j 2 e e 应用中,经验特别比技术细节更有效,这是由于j 2 e e 的复杂性导致。j 2 e e 应用试图包含过多的“衔接”代码,每次重看代码,都会发现占有相当比重的代码什么 事情也不做。许多的j 2 e e 应用使用分布式的对象模型,这让人非常不适合。一个主要 的原因是代码过大而且重复,在概念上让人混淆。因特网上的分布式应用通常比本地的 更复杂,而且性能更低。当然,如果实际的业务需要分布式的架构,需要实现分布式的 结构和接受在线交易,s p r i n g 框架也提供了对这项功能的支持,而且使用起来更简洁。 2 3 轻量级框架特点 相对于传统容器强迫使用指定的编程模型,轻量级容器则不是。轻量级容器鼓励人 们使用普通的j a v a 对象,然后将p o j o 1 6 1 ( 即p o j o ,p l a i no l dj a v ao b j e c t ) 绑在一起, 并将服务与它们相关联。这样开发者可以将更多的精力集中在业务开发上,多快好省地 完成稳定且灵活的产品开发。轻量级设计模式使开发者可以在对象和集成服务之间进行 松散耦合,而无需艰苦地编写业务逻辑或领域模型l 切。 轻量级框架侧重于减小开发的复杂度,相应的处理能力便有所减弱( 如事务功能弱、 不具备分布式处理能力) ,比较适用于中小型企业应用开发。一方面轻量级框架因采用 基于p o j o s 的方法进行开发,使应用不依赖于任何容器,提高了开发调试效率;另一方 面轻量级框架多数是开源项目,开源社区中提供了许多良好的设计模式和许多快速构建 工具以及大量现成可供参考的开源代码,有利于项目的快速开发。随着可供选择的框架 层出不穷,开发者可以根据需要选择对应企业应用开发的轻量级框架。 轻量级框架的产生并非是对重量级框架的否定,甚至可以说在某种程度上二者是相 互补充的。轻量级框架在努力发展以开发具有更强大、功能更完备的企业应用;新的 e j b 规范日b 3 0 则在努力简化j 2 e e 的使用,使得e j b 不仅仅是擅长处理大型企业系统, 也可以用来开发中小型系统,这也是e j b 轻量化的一种努力1 1 8 】。对于大型企业应用以及 将来可能涉及到能力扩展的中小型应用,采用结合轻量级框架和重量级框架不失为一种 7 武汉理工大学硕士学位论文 较好的解决方案。相对于传统重量级框架来说,轻量级框架具有如下特点: 属于开源技术,文档资料比较丰富,容易获得以方便学习和掌握: 基于p o j o 的思想编程,使得应用易于测试,而且对象也可以在容器外运行; 采用依赖注入或者控制反转技术,将服务或者其他对象注射进入p o j o ,所有 对象实例的创建和管理由容器实现,使得所有的p o j o 实现最大化的松耦合; 实现中不用编写任何针对特定容器的代码,易于学习、配置和移植; 开发过程中,一般都是服务于系统体系结构的特定层次; 虽然架构相对简单,但是可以实现很强大的功能。 2 4 本章小结 本章主要介绍了框架的基本概念、基本特点以及优点;然后介绍了传统j 2 e e 技术 目前存在的弊端,如开发周期长、不易测试,部署复杂,后期维护成本高等;最后介绍 了轻量级框架的基本概念及优点。下一章,将重点对本文所要研究的2 种轻量级框架技 术,s p r i n g 、h i b e r n a t e 以及它们间的整合进行介绍。 8 武汉理工大学硕士学位论文 第3 章s s h 框架研究 在众多的轻量级框架中,本文选取了当今最广泛使用的2 个轻量级框架s p r i n g 和 h i b e r n a t e 来阐述和研究,并将它们组成s s h 框架s p r i i i gm v c 、s p r i n g 和h i b e r n a t e 。 3 1s p r i n g 框架 3 1 1s p r i n g 概述 2 0 0 2 年,r o dj o h n s o n 的书( e x p e r to n e o n o n ej 2 e ed e s i g na n dd e v e l o p m e n t 阐 述的内容更进一步地改变了j 2 e e 编程,同时也在此书中的范例基础上拓展出s p r i n g 框 架的主要内容1 1 4 。自从s p r i n g 框架1 0 发布以来,便很快被j 2 e e 社区所接受,现在s p r i n g 框架已经相当成熟,远远超出了r o d 在他的书中所陈述的,同时s p 血g 仍然在不断的 完善和发展。 s p r i n g 框架诞生于e j b 2 x 越来越遭人置疑、越来越多的f j b 2 x 项目面临失败或死 亡之后,它的目的就是解决e i b 遇到的众多问题。不像其它单层框架s t r u t s 、h i b e r n a t e 等,s p r i n g 是一个应用框架【1 9 1 1 2 0 1 2 1 1 ,是为了解决企业应用程序开发复杂性而创建,其目 的是帮助整个应用架构趋于一致,更加有效的将各领域最好的单层框架集合在一起,创 建一个协调、高效的应用程序结构。相对于e j b 2 x ,s p r i n g 是真正非入侵性的。它的非 入侵性特点,体现在它是完全基于p o j o ( p l a i no r d i n a r yj a v ao b j e c t ,简单j a v a 对象) 构建,没有使用任何非标准的j a v a 类。这也说明了s p r i n g 框架可以不需要任何其它容 器的支持就可在任何j a v a 环境中使用,也意味着s p r i n g 使用起来更加简单,更加易于 移植。 s p r i n g 不仅为构建企业应用提供了轻量级解决方案,还提供了对声明式事务管理、 远程访问、邮件服务和各种各样的数据持久方式的支持。s p r i n g 在为企业应用提供一站 式服务功能的同时,本身又是模块化的,允许开发者随意选择其中的一个模块使用,不 会强加任何开发者不需要的模块到程序代码之中,所以不会带来冗余。s p r i n g 不仅解决 了开发者的问题,而且加强了好的编程实践,例如面向接口编程、减少耦合、允许易测 试性等。在现代编程尤其是j a v a 编程中,好的开发人员都在实践测试驱动开发,s p r i n g 对此也提供了支持,通过提供丰富的测试套件轻易的测试所编写的类。 s p r i n g 框架由定义良好的7 个模块组成【2 2 1 ,如图3 - 1 所示。s p r i n g 提供了一套完整 的组件,从页面展示的m v c 框架到后台的数据库o r m 映射等统统都有,其中有些是 9 武汉理工大学硕士学位论文 s p r i n g 白带的,有些则是提供了集成第三方优秀组件的接口。 r l s p r i n g o r m j s p r i n g w e b k 。一。j 霉s鬣 p r i n g d a 0 1 器篡i 陵。i 。圆匦;。l 图3 1s p r i n g 框架图 下面介绍s p r i n g 框架每个模块的功能: s p r i n gc o r ec o n t a i n e r s p r i n g 核心容器,提供了s p r i n g 框架的核心功能。 b e a n f a c t o r y 是s p h n g 核心容器的主要组件,它通过控制反转将应用程序的配置 和依赖性规范与实际的应用程序代码分开,这个模块是整个s p r i n g 的基础。 s p r i n gc o n t e x t :s p r i n g 上下文,构建在b e a n f a c t o r y 之上,通过配置文件向s p r i n g 框架提供上下文信息。除了继承s p r i n g 核心模块的功能之外,另外增加了国际 化、资源访问等功能。 s p r i n g a o p s p r i n g 提供了面向方面编程的功能,因为s p r i n g 的核心是基于控 制反转的,所以可以很容易地使s p r i n g 的依赖注入为a o p 提供支持。 s p r i n gd a o :提供了一个简单而又有效的j d b c 应用,使用它的d a o 就足以 应付开发人员的日常应用。 s p r i n go r m :s p r i n g 除了有自己的j d b c 应用之外,还提供了对其它一些o r m 框架的支持,例如j d o 、h i b e r n a t e 和i b a t i s 等。基于s p r i n g 的良好设计,这些 开源框架都可以和s p f i n g 进行良好的结合。 s p r i n gw e b :提供了简化的处理多部分请求以及将请求参数绑定到域对象的任 务。 s p r i n g m v c :s p r i n g 提供了m v c 2 模式的实现,清晰地划分了w e b 应用中涉 及到的各项内容,使用起来非常方便,也使开发人员可以使用s p r i n g 框架的所 有其它特性,如检验等功能来实现程序需要解决的问题。但s p r i n g 不会强迫开 发人员使用,s p r i n g 对其它的m v c 框架提供了很好的支持,例如s p r i n g 可以 1 0 武汉理工大学硕士学位论文 和s t r u t s 集成在一起。如果开发人员对它们比较熟悉,仍然可以选择使用。 综上所述,s p r i n g 可以填补很多介于传统j 2 e e 的基本功能和企业应用软件的需求 之间的空缺,从而使企业编程变得简便。s 州n g 能迅速在j a v a 开发人员中流行的原因, 不外乎是s p r i n g 具有以下几个重要特点【矧: 设计良好的分层结构,使得开发人员可以很简单地进行扩充,并引入先进的设 计理念;良好的架构设计,使得应用程序尽可能少地依赖应用程序的环境,从 而使得应用脱离了环境的影响; 以i o c 为核心,促使开发人员面向接口编程,可以养成良好的编程习惯,从而 便于程序的扩充和维护;通过依赖注入来设定对象之间的依赖关系,是无侵入 性的,即不需要程序中的类实现任何接口,只要遵循j a v a b e a n 的一些规范而已。 它也支持a o p ,使得可以面向切面编程。 s p r i n g 能够替代e j b ,如果开发人员原来使用e j b ,则使用s p r i n g 后还可以继 续使用日b ;如果要从头开始开发应用程序,则开发人员可以完全脱离e j b , 而只使用s p r i n g 提供的功能就可以代替e j b ; s p r i n g m v c 很好地实现了m v c 2 ,并提供了很简单的对国际化与资源访问的支 持,而且可以和s p r i n g 提供的i o c 和a o p 联系起来。 3 1 2s p r i n gi o o s p r i n g 框架的核心是基于控制反转( 1 0 c ,i n v e r s i o no f c o n t r 0 1 ) 这一原则。控制反 转1 2 4 j 是一种可以让组件依赖关系的创建和管理置于程序外部的技术,核心是提供一种将 调用者与被调用者分离的思想,目的就是由容器控制程序之间的关系,而不是以前传统 实现中的由编写程序代码来直接控制。也就是说控制权由应用代码转到了外部容器,控 制权的转移就是所谓的反转。控制反转并没有如同名字听起来那样复杂,实际上在项目 中应用控制反转,将会使得代码更简单,更易理解,也更易于测试。 2 0 0 4 年m a r t i nf o w l e r 先生在回答横切控制就是反转,他得出结论凡获得对象的依 赖都是反转【明。基于这个结论,他为控制反转起了另一个响亮的名字:依赖注入( d i , d e p e n d e n c yi n j e e t i o n ) 。可以说依赖注入更准确的表达了这种设计理念,就是组件之间 的依赖关系由容器在运行期决定,即由容器动态的将某种依赖关系注射到组件之中。程 序需要什么业务逻辑组件服务的时候只要告诉容器,而不用自己直接实例化对象,这就 是业界流行的“你不用调用的,到时候我会来找你”l 冽的原则。一切由i o c 容器管起 来,需要调用的所有业务逻辑模块都会由i o c 容器组织起来,程序要做的就是直接使用 所需要的服务。传统使用上,每个对象负责获取它需要的其他对象,这将会导致代码耦 武汉理工大学硕士学位论文 合紧,并且不易于测试。使用控制反转技术,可以使对象间的依赖关系通过外部实体控 制。 l o c 容器的基本原则是:应用对象不负责查找资源或者其依赖的协作组件,配置对 象的工作由i o c 容器完成,“查找资源”的逻辑应该从应用代码中抽取出来,交给容器 负责。也就是将资源之间的依赖关系不再通过硬编码的方式实现,而是转移到配置文件 中定义它们之间的依赖关系。 依赖关系的注入主要有以下三种形式 2 4 1 1 2 7 1 : 基于接口注入 接口注入需要程序中的类实现特定的接口或继承特定的类,这样一来,程序中写的 类就必须依赖于特定的接口或特定的类,就构成了一种侵入性的行为,所以这种方式目 前已经几乎不再使用。a p a c h e 开源的a v a l o n 和e j b 容器属于这一类。 基于s e t t e r 方法注入 在基于s e t t e r 注入中,需要为每个要注入的类属性定义公共的s e t t e r 方法,i o c 容 器通过j a v a b e a n 形式的方法将组件的依赖关系注入到组件中。组件的s e t t e r 方法将一组 依赖关系暴露给i o c 容器,并受之控制。s e t t e r 注入具有很大的灵活性,是最广泛使用 的注入机制,也是最易于实现的注入机制,但是这种方式很容易破坏类的状态和行为。 基于构造器注入 构造器注入就是在组件的构造器处提供依赖关系的注入,这种组件声明一个构造器 或者一组构造器从构造参数中获取依赖关系,i o c 容器会在实例化它的时候将依赖关系 传递给它。 在实际开发中,具体选择那一种方式要根据具体情况来定。接口注入方式由于灵活 性、易用性不如其它两种方式,所以目前已经不再使用。s p r i n g 对s e t t e r 注入和构造器 注入提供了很好的支持,它们也是目前主流i o c 实现模式,各具优势。 如果在使用组件之前就需要实例化存在依赖关系的类的时候,或者说当需要确认依 赖关系将被传递给组件的时候,构造器注入特别有用。反过来,基于s e t t e r 方法的依赖 注入在很多情况下都非常有用,它在非i o c 的设置下对代码的影响最小。首先是当组件 对容器暴露了它的依赖关系,同时愿意提供一个默认依赖关系的情况,再有就是基于 s e t t e r 的依赖注入允许将依赖关系声明为接口。基于s e t t e r 的依赖注入还允许在运行中 将依赖关系替换为一个不同的实现,而不需要重新建立一个父组件的实例。可以这么说, 基于s e t t e r 依赖注入的最大优点就是它对注入机制的侵入最小。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论