




已阅读5页,还剩61页未读, 继续免费阅读
(计算机应用技术专业论文)基于jsfspringibatis的系统设计与模块实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着互联网技术的增长,越来越多的企业开始开发与部署基于w e b 的企业应用。面 对日益复杂的软件系统,保证我们项目的高效高质是最为关键的问题。而框架模式的运 用恰恰是解决问题的一条现实可行的途径。本文的研究目的是希望能通过设计出一种集 成架构,使其能够减轻开发人员处理复杂问题的负担,把开发人员从编码中彻底的解放 出来,从而大幅度提高软件的开发效率和开发质量,达到事半功倍的效果。 综合网络监控系统属于中小型w e b 应用系统,不涉及复杂的分布式等应用,采用 重量级容器会带来许多负面效果,例如:部属复杂、运行缓慢、难以维护等。且掌握的 技术层面较多,学习困难。针对上述技术性风险问题,本文提出了在构建系统的过程中 采用更具响应能力的轻量级框架。一方面,简化了编程模型,解决了丌发的规范化问题, 保汪了产品的质量。另一方面,减小了丌发人员的负担,提高了丌发效率和系统的可维 护性。 本系统在设计系统的架构时采用了三层的体系结构,分别是表示层、业务逻辑层和 持久层。在表示层使用了j s f 框架,在业务逻辑层使用了s p r i n g 框架,在持久层上使用 了i b a t i s 框架。利用a p p l i c a t i o n c o n t e x t 集成j s f 与s p r i n g ,利用d a o 模式集成s p r i n g 与i b a t i s ,形成一个集成的w e b 开发架构。结合这三种技术允分利用它们的优势,使得 系统层与层之间的耦合度降低,代码重用率增加,结构清晰,具有很好的可扩展性和可 维护性。 本文深入分析了j s f + s 州n g + i b a t i s 框架的工作原理和实现方法以及系统用户管理模 块的实现过程。该集成架构的使用在一定程度上减轻了开发人员的工作量,提高了开发 效率。建。泣了一套完整的企业w e b 丌发框架,使得丌发人员把关注的焦点放在客户关 心的业务逻辑上,提升了系统的整体性能,并且对基于j a v aw e b 的其他应用系统的工 程化丌发提供了借鉴。 关键词:框架;j s f ;s p r i n g ;i b a f i s 人造交通人学i :学硕十学位论文 a b s t r a c t w i t ht h eg r o w t ho fi n t e r n e tt e c h n o l o g y ,m o r ea n dm o r ee n t e r p r i s e sb e g i nd e v e l o p m e n t a n dd e p l o y m e n to fw e b - b a s e de n t e r p r i s ea p p l i c a t i o n s f a c e dw i t hi n c r e a s i n g l yc o m p l e x s o f t w a r es y s t e mt oe n s u r et h a to u rh i g h q u a l i t yp r o j e c t si si t sh i g he f f i c i e n c ya st h ek e yi s s u e t h eu s eo f m o d e l sa n df r a m e w o r kt os o l v et h ep r o b l e me x a c t l yi sar e a l i s t i ca n df e a s i b l ew a y i nt h i sp a p e r ,t h ep u r p o s eo ft h es t u d yi st o d e s i g na ni n t e g r a t e dt h r o u g ht h es t r u c t u r e t o e n a b l ei tt or e d u c et h ed e v e l o p e r so ft h eb u r d e no fd e a l i n gw i t hc o m p l e xi s s u e s ,f r o mt h e d e v e l o p e r so fc o d i n gc o m p l e t el i b e r a t i o n ,t h u ss u b s t a n t i a l l yi m p r o v es o f t w a r ed e v e l o p m e n t e f f i c i e n c ya n dt h ed e v e l o p m e n to fq u a l i t y ,t oa c h i e v ee f f e c t i v ea n de f f i c i e n t i n t e g r a t e dn e t w o r km o n i t o r i n gs y s t e ma r es m a l lw e ba p p l i c a t i o n sa n d i sn o ti n v o l v e di n c o m p l e xa p p l i c a t i o n ss u c ha sd i s t r i b u t e db yh e a v y w e i g h tc o n t a i n e r sw o u l db r i n gm a n y n e g a t i v er e s u l t s ,f o re x a m p l e :t h e i rs u b o r d i n a t e sc o m p l e x ,r u n n i n gs l o w ,d i f f i c u l tt om a i n t a i n , a n ds oo n m a s t e rt h et e c h n i c a ll e v e lm o r ea n dl e a r n i n gd i f f i c u l t i e s t oa d d r e s st h ea b o v e t e c h n i c a lr i s ki s s u e s ,t h i sp a p e rp r e s e n t sas y s t e mi nt h ep r o c e s so f b u i l d i n gam o r er e s p o n s i v e f r a m e w o r ko fl i g h t w e i g h t ,o nt h eo n eh a n d ,t os i m p l i f yt h ec o m p o s i t i o nm o d e l ,s o l v et h e d e v e l o p m e n to fs t a n d a r d i z e dp r o b l e m sa n de n s u r et h eq u a l i t yo fp r o d u c t s o nt h eo t h e rh a n d , t h ed e v e l o p e r sr e d u c e dt h eb u r d e n ,a n di m p r o v i n gt h ee f f i c i e n c ya n dt h ed e v e l o p m e n to ft h e s y s t e mm a i n t a i n a b i l i t y t h es y s t e ma r c h i t e c t u r ei nt h ed e s i g no ft h es y s t e mu s e di nt h et h r e e t i e ra r c h i t e c t u r ei s p r e s e n t a t i o nl a y e r , b u s i n e s sl o g i c a ll a y e ra n dp e r s i s t e n c el a y e r i np r e s e n t a t i o nl a y e ru s et h e js ff r a m e w o r k ,i nb u s i n e s sl o g i c a ll a y e ru s et h es p r i n gf r a m e w o r k ,i np e s i s t e n c el a y e ru s e i b a t i sf r a m e w o r k i n t e g r a t e dj s fa n ds p r i n gu s eo fa p p l i c a t i o n c o n t e x t ,u s ed a os c h e m a i n t e g r a t i o ns p r i n ga n dl b a t i st of o r ma ni n t e g r a t e dw e bd e v e l o p m e n tf r a m e w o r k c o m b i n i n g t h e s et h r e et e c h n o l o g i e sm a k ef u l lu s eo ft h e i ra d v a n t a g e s ,l e ts y s t e ml a y e ra n dl a y e ro ft h e c o u p l i n gw i t h t h el o w e rr a t e ,i n c r e a s ec o d er e u s a b i l i t y ,s t r u c t u r a lc l a r i t y ,h a sag o o d s c a l a b i l i t ya n dm a i n t a i n a b i l i t y t h i si n d e p t ha n a l y s i so ft h ej s f + s p r i n g + i b a t i sf r a m e w o r ka n dt h ew o r k i n gp r i n c i p l e a n dt h em e t h o do fu s e r so ft h es y s t e mm a n a g e m e n tm o d u l ei m p l e m e n t a t i o np r o c e s s t h eu s e o ft h ei n t e g r a t e df r a m e w o r kl e td e v e l o p e r sg r e a t l yr e d u c et h ew o r k l o a d ,i n c r e a s ed e v e l o p m e n t e f f i c i e n c y t h ee s t a b l i s h m e n to fac o m p l e t es e to fe n t e r p r i s ew e bd e v e l o p m e n tf r a m e w o r k t h a te n a b l e sd e v e l o p e r st of o c u so nt h eb u s i n e s sl o g i co fc o n c e r nt oc u s t o m e r s ,e n h a n c i n gt h e s y s t e m so v e r a l lp e r f o r m a n c e ,o nt h eo t h e rj a v a b a s e dw e ba p p l i c a t i o nd e v e l o p m e n ts y s t e m e n g i n e e r i n gp r o v i d e sr e f e r e n c e k e yw o r d s :f r a m e w o r k ;j s f ;s p r i n g ;i b a t i s 绪论 绪论 随着企业信息化进程的不断深化,一个企业在生产、管理、经营过程中会越来越多 的用到i t 设备和设施。而关键业务的i t 设备故障往往会给企业造成巨大损失,即使是 非关键性业务的设备隐患也一样不容忽视。这就迫切需要一套对企业资源进行综合监控 管理的系统,从而保障i t 系统稳定、高速和安全的运行。网络监控系统是针对现代企 业i t 资源的全方位的综合管理软件,在各个企业都得到了前所未有的重视,如电信、 铁路等部门都已经陆续拥有了本企业的网络监控系统。但有线和宽带业是近年来新兴的 信息产业,在这个领域上还是一个空白【1 1 。综合网络监控系统就是为了解决这个问题而 开发的系统。 基于j 2 e e 的w e b 应用以其层次性、平台无关性成为系统丌发的主要解决方案。基 于j 2 e e 平台的应用系统各层的实现技术可谓是多种多样,每种技术都有其优缺点和适 用的范围,怎样选择各层的技术以及如何结合这些技术实现一个应用系统是一个值得进 一步考虑的问题。本文就是以j s f 框架为主要的技术背景,集成s p r i n g 和l b a t i s 框架, 结合系统的需求,详细的分析了如何实现系统的过程。 本文主要研究内容如下: ( 1 ) 第一章深入剖析几个流行的开源框架和其他相关的专业技术。 随着互联网技术的发展,b s 体系结构的人规模应用以及分层技术的出现,涌现出 许多出色的i :源框架。如表现层的j s f 、业务逻辑层的s p r i n g 和持久层的i b a t i s 等。本 章详细介绍了以上技术及设计模式等相关概念。 ( 2 ) 第二章介绍了综合网络监控系统的需求分析。 卣先介绍了该系统的项目背景,明确了丌发该系统的意义。然后重点分析了系统的 功能需求,根据功能需求对系统进行了模块设汁。 ( 3 ) 第三章介绍了综合网络监控系统的总体设计。 首先介绍了该系统的架构设计,介绍了系统的分层,各层之间的规约,层与层之问 是如何集成的,各层是怎样实现的。然后介绍了系统的固际化、a o p 代理等一些功能的 设计。最后介绍了系统功能模块的设计和数据库的设计。 ( 4 ) 第四章通过用户管理模块介绍了系统如何实现。 分别对表示层、业务逻辑层、持久层的实现方法进行了介绍。 整个系统的实现是在j s f + s 州n g + i b a t i s 集成架构中建笾了一个w e b 应用程序。通 过将w e b 应用程序划分成不同的层和面向接口编程,既降低了层与层之间的祸合性, 又能统一管理,增强了系统的可扩展性和可维护性,使系统具有很好的性能。 人连交通人学l :学硕十学位论文 第一章相关技术介绍 1 1 框架简介 什么是框架? 框架即f r a m e w o r k ,其实就是一个相关功能的可扩展的对象集。它表 现为一组抽象组件及各组件实例问的交互方法,供你选用完成你自己的系统。它规定了 应用的体系结构,提供了众多的类和方法,开发者可通过继承或覆盖某些方法,通过重 写子类或组装对象完成系统开发。 应用框架技术要解决的是什么问题? 框架要解决的一个重要的问题就是技术整合 问题。j 2 e e 平台是现今主流的程序开发技术,应用于各个领域,它有着各种各样的技 术。不同的系统开发由于需求不同需要选择不同的j 2 e e 技术,这就使得软件企业最终 要应用这些技术。然而应用这些技术的复杂性会给系统带来风险。要想丌发出高效的、 健壮的、结构良好的、易于维护的w e b 应用程序,就应该将应用自身的设计和具体的 实现技术分丌,这样在丌发系统时就使丌发人员有精力集中在系统的设计上而不是在具 体的技术实现上。 为什么要用框架? 因为软件系统发展到今天已经很复杂了,涉及到的知识和内容很 多,特别是服务器端的软件。在丌发软件时使用框架等于让别人帮你完成一些基础工作, 你只需要将精力放在系统的业务逻辑设计上。成熟的丌源框架都很稳健,结构很好,具 有很好的可扩展性和可重用性,并且是不断升级的,你可以直接感受到框架升级带来的 好处。框架可以帮助我们处理很多细节j u j 题,如:数据验证、安伞性、事务处理等问题。 应用框架可以降低系统设计的耦合性,低耦合性是衡量软件丌发成功与否的一个标准, 只有降低耦合件才能体现出系统的可扩展性和可维护性。 随着丌发技术的不断发展,我们在j 2 e e 中分离出表现层、业务逻辑层和持久层。 这三个层次上分别涌现出大量的,l :源框架。其中有表现层的基于u i ( u s e ri n t e r f a c e ) 组 件构建w e b 界面的j s f ( j a v a s e r v e rf a c e s ) 技术,业务逻辑层的基于l o c ( i n v e r s i o no f c o n t r o l ,控制反转) 和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 ,面向方面编程) 的s p r i n g 框架,和持久层的基于o r m ( o rm a p p i n g ) 的i b a t i s 框架,他们都对j 2 e e 提供了良 好的支持,目前都是j a v a 社区的讨论热点。 1 2 设计模式简介 什么是设计模式? 设计模式是对在某种环境中反复出现的u j 题以及解决陔问题的 方案的描述,它比框架更抽象。模式有助于对框架的理解,如果熟悉框架的设计模式可 以很快的理解该框架的思想1 2 j 。一个框架可能会包含很多设计模式。 第一章相父技术介纠 在面向对象的编程中,开发人员更加注重代码的重用性和可维护性,设计人员可以 简单方便的采用设计模式来设计体系结构。设计模式的思想就是将系统易变的部分与不 变的部分进行分离,将系统不同层次的功能进行分离,尽量减少对象之问的耦合。当某 些对象发生变化时,其他对象保持不变。其中m v c 模式是目前广泛流行的设计模式, 它是j 2 e e 的推荐设计模式。 1 3j s f 1 3 1j s f 简介 随着互联网技术的发展,越来越多的商业应用程序都采用了b s 体系结构,s e r v l e t 、 j s p 、s t r u t s 等技术成功的应用于w e b 程序,j a v a 已经成为开发w e b 应用系统的领导技 术。但是基于j a v a 的用户界面需要手工书写大量的标签,还需要考虑页面状态并处理相 关事件,增加了系统开发难度,效率较低。因此,创建一个标准的开发用户界面组件的 用户界面框架,简化开发过程势在必行。j s f 技术正是为了解决这一难题而产生的。 2 0 0 1 年5 月s u n 提出j s f ,j s f 经过j c p 专家成员近三年的努力,在2 0 0 4 年3 月 j s f 的规范1 o 版真正面世。又经过差不多两年的时间,j s f 终于在2 0 0 6 年年中成为j 2 e e 的组成部分,成为官方舰范的标准。 j s f 是由s u n 公司倡导的技术,它的主要目的是为开发w e b 应用用户界面提供一个 标准的框架,它旨在减轻应用程序的丌发负担。它通过运行在应用程序服务器上的应用 程序将u i 呈现回客户端。j s f 利用了现有的标准的u l 和w e b 层概念,却小会把开发人 员限制于特定的标记语言、协议或客户端设备。 j s f 舰范主要由以下两个方面组成1 3 j : ( 1 ) 一组a p i :它提供u i 组件、状态管理、事件处理、数据验证和定制标签库等, i j 时这些a p l 支持国际化和可访问性。 ( 2 ) 瞬个j s p 定制的标签库:包括 和 ,它们分别表示 页面上的u l 组佴:和逻辑操作。 1 3 2j s f 模式 j s f 是基于m v c 模式的框架。m v c 模式旨在将交互性应用分为三个独立的组件: m o d e l 、v i e w 、c o n t r o l l e r 。m o d e l 是应用程序的主体部分,代表核心的业务逻辑和应用 数据,丌发人员主要负责m o d e l 部分的j a v a b e a n 的丌发。v i e w 是代表用户看到并与之 交互的界面,j s f 技术强调了v i e w 部分,它提供了一套标准的u i 组件,在工具的支持 人造交通人学i 。f q - 硕f j 学位论文 下,你可以通过拖放简单地添加到网页上,然后设置某些显示属性来满足视觉要求,网 页设计者只需要专注于页面的设计。c o n t r o l l e r 负责接收客户端的请求,调用模型和视 图去完成用户的需求。j s f 的技术重点在v i e w 部分,它实现了w e b 应用程序设计角色 的完全分离【甜,程序的流程控制则由f a c e s c o n f i g x m l # f f f d 置。j s f 的模式图如图1 1 所示。 图1 1j s f 模式图 f i g1 1j s fm o d u l ed i a g r a m 1 3 3j s f 生命周期 w e b 应用程序需要响应相应的用户事件,如单击按钮或链接时,j s f 的f a c e s s e r v l e t 会负责从w e b 客户端接收进来的请求,然后执行一组合理的步骤( j s f 的牛命周期) 来 准备和派发响应。 j s f 定义了一组,眦谨的请求处理周期,它包括六个阶段i5 1 。如图1 2 所示,证常的控 制流使用实线表示,如果请求一个页【面鼋新显示,或是发生了有效性验证或转换错误, 它的控制流则用虚线表示。 4 第一节相关技术介绍 :蕊- 黑蒜 i 。a p p l y i 1 1 鼍黧u e s t 卜:嚣一 l型竺! 兰i l u 。 :蒜:卜 羞pr蕈oceses)医nvo蛩keevents a p p l i l rfc a t i 明r ii 图1 2j s f 生命周期 f i g1 2j s fl i f e c y c l e 怔訇( 蔓j c r e s p p o l n d s e e - p r o 。c e s 。s i 黼l j 嘶t s ; 器黑i ( 1 ) r e s t o r ev i e w ( 恢复视图) :该步骤实质就是请求页面创建服务器端视图。如果 这个页面之前在同一个用户会话中显示过并且保存过数据,f a c e s s e r v l e t 将从这些数据 中构建服务器端视图,在请求之间保存组件状念,这是j s f 的一项重要功能。 ( 2 ) a p p l yr e q u e s tv a u e s ( 应用请求值) :视图被恢复后,每个视图中的组件会各自 查找r e q u e s t 中自己的信息,并储存所找到的值。其中包括了那螳需要被立即广播出去, 或者排队留待后续处理的所有用户界面事件。 ( 3 ) p r o c e s sv a l i d a t i o n s ( 处理验证) :每个用户界面组件都叮能有内部的验证逻辑, 或者很多在组件中注册的验证器,来对它的状态执行f 确性检验。如果发生验证错误, 则直接进入r e n d e rr e s p o n s e 阶段。 ( 4 ) u p d a t em o d e lv a l u e s ( 更新m o d e l 值) :在该步骤中,将已经通过验证的j s f 值复制到j 该组件相关联的m o d e l 对象中,如果发生了转换错误,则直接进入r e n d e r r e s p o n s e 阶段。 ( 5 ) i n v o k ea p p l i c a t i o n ( 调用应用) :在更新了用户界面组件的m o d e l 之后,默认 的a c t i o n l i s t e n e r 将响应所有排队的a c t i o n e v e n t ,后者通常与u i 组件( 例如按钮) 相 关联。这些u i 组件町能调用后台程序来处理新值。 ( 6 ) r e n d e rr e s p o n s e ( 渲染响应) :会针对先前收到的r e q u e s t ,返回一个含有相同 视图或新视图的r e s p o n s e 给客户端。 人连交通人学l :学硕十f - f q 论文 每一阶段表示请求处理生命周期的一个逻辑概念。在生命周期中,哪个阶段被执行 取决于j s f 程序是否已经产生请求和生命周期相应的传递阶段是否已经产生。另外,一 个传入的请求可能会经历全部阶段,也可能不经历任何阶段,这取决于请求的类型,在 生命周期中发生的校验和转换错误以及相应的类型。 j s f 是一种具有逻辑和表示严格分离的组件体系结构,它将请求生命周期清晰的划 分为多个阶段。正是由于这些特点,j s f 才能够与开发工具相结合,实现用户界面设计 的可视化,使用户只需拖放u i 组件,并为其设置数据验证器、事件处理器等即可完成 用户界面的丌发。后台处理则由j s f 在请求处理生命周期内自动完成,用户无需关心其 实现的细节。 1 3 4j s f 的功能 j s f 用多种方式简化了w e b 丌发,通过下列方式解决了w e b 开发过程中的许多实 际问题,从而使开发过程更加快速。j s f 提供的功能有: ( 1 ) 借助w e bu i 组件拖放开发界面,这就使得其摆脱了底层h t m l 的开发模式。 j s f 的u l 组件能极大的简化丌发人员的工作,程序员只需要根据业务逻辑编写代码, 不需要考虑代码之间如何配合,j s f 能保证它在合适的时候被执行i 6 。 ( 2 ) j s f 提供了强类犁的组件事件模型( 类似于s w i n g ) ,它通过服务器端的处理器 来响应客户端事件。 ( 3 ) 能够简化w e b 应用的用户界面与后台的数据传输。w e b 应用主要是表单的心用, j s f 提供了处理基于表单多贞和单页请求,实现了用户界面到业务逻辑的直接映射i7 1 。 ( 4 ) 开发者易于管理服务器端的u i 状态。j s f 能够在同一w e b 客户会话内的不同请 求间,保存用户界面组件的状态。 ( 5 ) 国际化支持。j s f 提供了罔际化和本地化的支持,你叮以建立同时适合不同国家、 不同背景使用者的站点,方便让不同地区的人访问。 ( 6 ) j s f 提供了表译验证功能。当已有的验证器不能够满足要求时,我们可以通过扩 展后的组件米创建定制的验证器。 1 3 5j s f 的优势 j s f 至少存在以下6 人优势: ( 1 ) j s f 技术足一种高层的页面表达方式。由y - j 2 e e 具有高度的可扩展性、可移植 性、编写大量支持高性能后端的代码等优点,因而成为丌发应用系统的首选技术。与此 同时,也涌现出不少基于j 2 e e 技术的开源框架,但是它们都是建立在h t m l 、h t t p 的底层协议的基础上的。而j s f 实际上是与底层协议无关的。这样的话,如果h t m l 6 第章相火技术介绍 这种标记语言被一种新的语言代替的话,j s f 的组件渲染机制能够支持新的具体的标记 语言,j s f 技术本身不会被淘汰。 ( 2 ) j s f 是一种基于u i 组件模型的技术。自从0 0 ( o b j e c t o r i e n t e d ) 技术提出以后, 基于组件架构在开发中因其抽象、封装、易理解、可变性和重用性等优势已经成为当今 的主流。j s f 就是将快速用户界面开发引入到服务器端的j a v a 。j s f 随着近几年的发展, 已经逐渐成熟,除了j s f 本身的组件以外,开发者还可以灵活的添加自身的j s f 组件。 第三方的组件很丰富,a p a c h e 提供的开源代码项目m y f a c e s 就是一个新j s fu i 组件库, 它还是对j s f 基本u i 组件的增强,拥有更广泛的u i 功能,如集成的t i l e s 支持、支持 j a v a s c r i p t 的菜单和树控件。此外还有o r a c l e 的a d f 和j s f c e n t r a l ( 是一个完全为j s f 开发社区服务的新网站) 。 ( 3 ) 支持值绑定。在用户界面元素中使用值绑定表达式时, 在服务器端把相应的结果呈现给用户时,使用的是右值模式,调用 g e t n a m e 方法,读取n a m e 的值。而当用户发送请求到服务器端时,使用的是左值表达 式来计算,调用s e t n a m e 方法1 8 j 。这些处理都交给j s f 束完成,不需要做特殊处理。 ( 4 ) 支持方法引用。在实现动态导航时,提交按钮必须有一个方法引用。例如: ,j s f 能够调用u s e r 这个b e a n 类巾l o g i n a c t i o n 方法。 ( 5 ) 支持p o j o 依赖注入。s p r i n g 提供了i o c 容器,在j 2 e e 中也内置了l o c 的实现 供j 2 e e 服务器使用,j s f 也使用了依赖注入或控制反转去实例化和初始化b e a n 。j s f 可以为你牛成各种各样的m a n a g e db e a n 。 ( 6 ) 多阶段划分请求处理生命周期。虽然都是建立在s e r v l e t 基础之上,但j s f 的生 命周期要比j s p 复杂得多。j s p 的,仁命周期非常简嗨,页面被执行时,h t m l 标记立即 被生成了,生命周期随即结束。而一个完整的j s f 请求处理乍命周期被划分为六个阶段, 典型的j s f 请求需要经历所有阶段,某止皂特殊的请求也订以跳过一些阶段。阶段的细分, 碌然引入了更多的处理,但j s f 框架会管王哩这4 切。所以,程序员在获得更多控制能力 的同时,】:作量并没有增加一j 。 除了以上六点,j s f 还有很多其他优势。s u n 微系统公司已经提议将j s f 作为构建 j a v aw e b 应用的首选技术。j s f 对于快速丌发及代码的可维护性有着很好的支持。我们 可以预见j s f 很快就会变成首选的框架。 7 人选交通人学l :学硕十学何论文 1 4s p r i n g 1 4 1s p r i n g 框架的体系结构 j 2 e e 的w e b 应用系统以其高度的可扩展性和平台无关性逐渐成为大多数公司的解 决方案。j 2 e e 技术强调分层原则,一个经典的w e b 应用中,在其职责上一般被分为表 示层、业务逻辑层和持久层三层。传统的基于j 2 e e 的开发通常采用e j b ,然而,e j b 的学习和应用是很困难的,并且因为其要求严格、重复的代码很多、配置复杂、代价昂 贵、丌发效率低等缺点造成了e j b 使用的困难。为了解决这一问题,出现了很多为业务 逻辑层服务的实用工具和框架。s p r i n g 就是这个领域中最为流行的框架。 s p r i n g 是一个丌源框架,它是一个服务于所有层的基于p o j o ( p l a i no r d i n a r yj a v a o b j e c t ) 、i o c 和a o p 的轻量级的j 2 e e 框架。s p r i n g 的目标就是使开发j 2 e e 应用系统 更加容易。它和j s f 、s t r u t s 、h i b e r n a t e 等框架不同,可以称得上是一个一站式的解决方 案。它提供了一个典型应用的大部分基础架构,还提供了声明式事务管理、r m i 、 w e b s e r v i c e 远程访问、邮件机制和其他各种数据存储方式的支持。s p r i n g 框架是模块化 的,它允许丌发人员仅使用该框架的一个或几个部分,你不必在每一层都使用s p r i n g , 允许你可以根据自己的需要,将模块以最佳的组合揉合在一起,形成一个统一的整体。 s p r i n g 定义了七个良好的模块。它们构建在核心容器之上,包含了很多功能和特性 i j 。如图1 3 所示: ( 1 ) c o r e 包:核心容器是框架的基础部分,提供了d i ( d e p e n d e n c yi n j e c t i o n ,依赖 注入) 机制来管理b e a n 容器的功能。它的主要部件是b e a n f a c t o r y ,它足工厂模式的实 现。它提供f a c t o r y 模式,利用l o c 动态的调用方式使用户将应用逻辑的配置从实际的 应用程序中分离出来,这就解除了系统配置和系统实现之问的紧密耦合。 ( 2 ) c o n t e x t 包:它提供了在框架模式里存取b e a n 的方法。c o n t e x t 包继承了b e a n 包 的特性,增加了r e s o u r c eb u n d l e s 、e v e n t p r o p a g a t i o n 、r e s o u r c e l o a d i n g 和t r a n s p a r e n t c r e a t i o n ,如s e r v l e tc o n t a i n e r ,来实现对文本消息( t e x tm e s s a g i n g ) 的支持。 ( 3 ) d a o 包:提供了一个j d b c 抽象层,用来管理异常处理和不同数据库厂商的错 误信息,消除冗长的j d b c 编码( 例如打了i :和关闭连接) 和各数据库厂商特有的错误代 码,简化错误处理。当数据访问出现异常,d a o 接口抛出异常信息,而不影响到持久 层。 ( 4 ) o r m 包:o r m 包为o r ( o b j e c t r e l a t i o n a lm a p p i n g ,关系一对象映射) a p i 提 供了集成层,使得在s p r i n g 中使用j d o 、h i b e r n a t e 和l b a t i s 变得简单,这螳对象关系工 具、s p r i n g 的通常事务和d a o 异常层次结构结合起来使用对象关系映射。 8 第一章相关技术介绍 ( 5 ) w e b 包:w e b 包提供了面向w e b 应用的特性,如使用s e r v l e t 监听器初始化上 下文和面向w e b 的应用上下文。利用w e b 包,s p r i n g 可以集成其他框架,如s t r u t s 、j s f 等。当j s f 或s t r u t s 一起使用s p r i n g 时,w e b 包可以与之相结合。 ( 6 ) m v c 包:m v c 包提供了全功能的面向w e b 应用的m v c 模式的实现,m v c 框架不仅仅是一种实现,它还容纳了大量的视图技术,这使得s p r i n g 拥有框架的所有其 他特性。 ( 7 ) a o p 包:a o p 包提供了允许面向对象编程的a o p 的实现。a o p 弥补了o o p ( o b j e c t o r i e n t e dp r o g r a m m i n g ,面向对象编程) 的不足,提供了另外一种程序结构的思 考方法。o o p 将应用分解到层次对象中,而a o p 把应用分为方面,它允许开发人员定 义类似m e t h o d i n t e r c e p t o r 和p o i n t c u t 的组件来将代码中那些逻辑上应该分离的部分解除 耦合。利用元数据功能,开发人员可以合并处理各种行为信息。 图1 3s p r i n g 模块图 f i g1 3s p r i n gm o d u l ed i a g r a m 1 4 2s p r i n gi o c 容器 ( 1 ) i o c 模式与d i 机制 i o c 容器和a o p 是s p r i n g 的最核心的技术。下面我们先来看看什么是i o c 模式, 这样可以更好的理解s p r i n g 这个框架i l 。 在一个软件系统中,模块之问必定会有这样或那样的依赖关系,永远不要想消除所 有依赖。但是,过强的耦合关系对软件系统的质量造成很大的危害,特别是当需求发生 变化时,代码的维护成本将非常高。所以,必须想尽办法米控制和消解不必要的耦合, 9 人_ 连交通人学i i 学硕l j 学位沦文 特别足那种会导致其他模块发生不可控变化的依赖关系。i o c 就是为了解决依赖关系而 发展起来的。 在传统的模块实现中,由程序代码直接控制程序之间的关系。而在i o c 方法中,由 容器来控制程序之i 日j 的关系,控制权由应用代码转到了外部容器,而不是在类的内部控 制。这就是所谓的“控制反转,_ 著名的好莱坞原则:d o n tc a l lm e ,1w i l lc a l ly o u 。s p n n g 框架的核心思想就是“解耦”。s p r i n g 使应用程序的各个部分处于松耦合的状态,促使我 们的代码的功能首先定义到接口当中,和实现部分分开。这样在设计的时候我们可以将 注意力集中在功能的设计和应用程序的测试上,减小对容器的依赖。这种“解耦”主要通 过s p r i n g 的i o c 技术实现的。i o c 模式改变了调用者和被调用者之间的关系,由本来的 应用程序本身主动地调用变成由s p r i n g 的配置文件被动的控制。 在实际应用中,我们可以看到两种形式的i o c d e p e n d e n c yl o o k u p 和d e p e n d e n c y i n j e c t i o n 。s p r i n g 的l o c 容器使用的就是d i 方式。它是将创建的对象实例任务剥离,由 i o c 容器或者框架实现,然后在运行期间由容器将依赖关系注入到组件当中,而依赖的 查找完全由容器自身实现。 s p r i n g 的注入方式主要有三种:它们分别是t y p e l 的接口注入( i n t e r f a c ei n j e c t i o n ) , t y p e 2 的设值方法注入( s e t t e ri n j e c t i o n ) ,t y p e 3 的构造子注入( c o n s t r u c t o ri n j e c t i o n ) 。 接口注入模式是一种过时的技术,在其灵活性和易用性等方面不如后两种注入模 式。由于设值方法注入和构造子注入各自有着自身的优势。现在已经成为主流的i o c 实 现力- 式l l 2 。 设值方法注入的优势: 我们只需要用获得的资源作为类的属性定义在类中,然后写下属性的s e a e r 方 法,剩下的二i :作全部交给了l o c 容器。对于习惯了传统的j a v a b e a n 开发的程序员而言, 这种方法更加直观、自然。 对于需要参与实体继承较为复杂的情况,设值方法注入模式往往比较简单。而 构造子注入则需要在构造函数中设定依赖关系,比较复杂。 如果要建市的对象关系比较多的时候,构造子注入会在构造函数中写入太多参 数,这时采用设值方法注入就会简单了许多。 构造子注入的优势: 在构建对象的同时在构造函数中完成了依赖父系的建立,避免了繁琐的s e r e r 方法的编写,依赖关系集中,增加了代码可读性。 通过一种方式来保证对象的引用完整性和合法性,构造子注入无疑是最好的选 择。 1 0 第章相关技术介绍 如果需要让一些成员或资源变为只读或是私有,由于没有s e t t e r 方法,依赖关系 被构造子注入一次性设定,组件在被创建后就处于稳定状态,无须担心成员或资源的依 赖关系被破坏。 构造子注入屏蔽了依赖关系,对于调用者而言,你只需要对接口编程,而不需 要考虑组件内部依赖关系的实现。 对于大量依赖外部服务的组件而言,依赖关系的获得顺序可能非常重要。比如 某些操作初始化需要用到d a t a s o u r c e 的话,那么就必须要先初始化d a t a s o u r c e ,通过构 造子注入可以决定依赖关系的注入顺序。 可见设值方法注入和构造子注入各有优势,在基于s p r i n g 框架开发的系统中,我们 更多使用的是设值方法注入方式。 ( 2 ) s p r i n gb e a n 的封装机制 s p r i n gb e a n 包是为使用j a v a b e a n 技术、按名检索对象及管理对象问的关系而设计 的。b e a n s 包及其子包提供的功能为使用j a v a b e a n 技术的项目指定了一个基础设施。关 于b e a n s 包,有三个重要的概念。 b e a n w r a p p e r 接口 b e a n w r a p p e r 接门提供了设置和读取属性值、获得属性描述以及查询属性是否可读 写的功能。b e a n w r a p p e r 也提供了嵌套属性的支持,允许设置无限深度的子属性。同时, b e a n w r a p p e r 接口还允许我们加入标准j a v a b e a n 规范中的p r o p e r t y c h a n g e l i s t e n e r s 接口 和v e t o a b l e c h a n g e l i s t e n e r s 接口,从而提供订阅属性变化消息和台决属性变化通知的能 力,而不需要在目标类中加入额外的支持代码。最后,b e a n w r a p p e r 接口提供了按索引 随机设置带索引属性的支持。b e a n w r a p p e r 接口通常并不是氲接在应用程序代码中使用, 而是由d a t a b i n d e r 接口和b e a n f a c t o r y 管理。b e a n w r a p p e r 这个名字本身就暗示了它的 功能:对b e a n 进行包装,然后对包装后的b e a n 加以操作,例如设置属性值、检索属性 值等。 b e a n f a c t o r y s p r i n g 的i o c 容器的核心就是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 系统历史研究的新方法论-洞察及研究
- 新疆乌鲁木齐初中体育 第五周《技巧:前滚翻、后滚翻》说课稿 人教新课标版
- 小学数学课题个人申报书
- 第五单元环球之旅(三)-非洲与美洲《依内妈妈》说课稿2024-2025学年人教版初中音乐八年级 上册
- 抗压能力课题申报书
- 土地承包经营智能化服务合同
- 2025-2030中国长租公寓家具定制化需求与供应链优化报告
- 2025-2030中国跨境电商平台用户行为分析与市场机会洞察报告
- 2025-2030中国蓝领公寓市场缺口测算与商业模式探索
- 2025-2030中国自动驾驶技术商业化落地障碍与突破路径研究报告
- GB 17840-1999防弹玻璃
- 新闻传播中的媒介素养课件
- 文学鉴赏-课件
- 小军师面试万能绝杀模板-组织管理
- midasCivil斜拉桥分析课件
- 超疏水材料课件
- 应急响应程序流程图
- 中医刮痧法诊疗操作评分标准
- 腧穴定位法课件
- 社会体育导论PTPPT课件讲义
- 学校体育学(第三版)ppt全套教学课件
评论
0/150
提交评论