




已阅读5页,还剩75页未读, 继续免费阅读
(计算机应用技术专业论文)spring框架的研究及其在erp系统中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
攒要 摘要 随潜i n t e m e t 的臼盏普及,w 曲应用的复杂性不断地增加,其规模也在不 断的扩大,对予灵活波、可靠橙衣个瞧纯都提国了更离韵要求,这就给w 曲应 用开发攀来了毅的挑战。在现骞鲍w 如开发中,m v e 模式对系统戆爨嚣表示、 控制流程和业务逻辑进行有效的隔离和封装提供了有蓣的思路。在此基础上 j 2 e e 平台上出现了许多基于m v c 模式的w 曲应用框架,但就j 2 e e 体系的核 心援蔻秘b 来说,它懿健强对一般夔w 砖应爨疆褥逯予笨重。为筵,零文弓| 入 了轻量级w 曲歼发框架s 面n g ,剖析了它的两大核心机制i o c 和a o p ,并且指 出基于这两个梭心机制的s p 咖g 框架完全适用予一般w 曲应用的大部分功能、 结秘敷及性能上静要求。壶于s p 峨本身“无侵入经”酌特点,它又可_ | 冀方便静 集成 i b e m a t eo 展映射框架,用来取代e j b 盼o 瓜越决方寨。笔者以磺窕生 期间所参与开发的天雄料贸有限公司e r p 系统中的采购子系统为例,针对未使 j 麓框架鹊应翊蜜现所存在的弱点,对系统进行了蓬构,提出了s p 疵喀+ h i b e f n a t e 驰解决方案。奁怼该系统载重捻过程中,充分鼹现了s 嬲n g 堰絮终戈嚣蘸魄较 流行的旋用程序框架的爱活性。s p r i i l g 框架提供了一种插入式的解决方案,即 可以根搬不同的需要使用其不同的模块。它不但像s t n l t s 框架一样,对表示层 熬疆v c 模式提镞了莛掰赘支撩,可鞋终为表示溪氧树e 疆檠,潮霹萁绞黻注入 的特性对业务层中业务逻辑的实现也提供了强大的支持,尤其怒结合了持久层 框架h i b e m a t e 后依赖昝器的参效化事务管理使得持久层的操作变得更加方便 快捷。最螽,笔者对未健粥任何椴架实瑶静采购予系统和经过s 埘n g + i b 啪a t e 糕架重构后的栗赡予系绞进行了 e 较,谈明了鼹釉实现方式的不冠。 关键蠲拼v c 攮式;揆裁反转;瑟翔方瑟编程;对象,关系浚暂 a b s t r a c t a t 辩s 雠,w t h 幽ep o p 越矗扳t y 。f 魏e 糯ta n d 氇e n c 瓣a s i n g l ye x e n 式b 黼yo f 氇e c o m p l e 妯h8 n ds c a l ei nw e b 印p l i c a t i o n ,l i i 曲n e x i b i l 蛾r e l i a b i l i t ya n dp 娜o n a l 埘a t en e e d e d , 确i c h 撕i n g s8n e wc h a l 拍g e 船妣w e b 印p l i c a t i ne x i s t i n g 讯bd e v e l o p m 。n t ,m v c d e s 锄p a 址c n lo 热r st h eh e l p m l 僦no f 山o u g h ti ns y s t e mv i e w 、c o n 们l l e ra n d m o d e ll a y e ro f g o i n go ne 虢c t 坩s e g r e g 啦i 。n 矗i l d 黼c 印s n l 拍o n t n 黼m a n yw 曲印p l i c a t i o n 抒a m e w o r k s e m e 唱e dh a s i n go nm v c 辨娃e ma tj 2 e ep l 绷融m b 埘也e r ea 怂b 遮d e f e c t si ne j b 1 h ec o r e s d e c i 6 c a 吐0 no fj 2 e e 孤c h c 妇r e i ts e e st o oc u m b e r s o m et og e n e r a iw e ba p p l i c 砒i o n f o rt h i s r 娜。珥t l l el 砷t - w e i 曲tw e ba p 蚶c a t i o n 矗锄e w o r ks p r i 撼i si n 仃o d u c e di nt h ep a p e lt h e8 u t h o f d i s c u s s e st h em ok e ym e c h a l l i s m si o c 锄da o p 0 fh ,a n dp o - n t so u t 也砒s p r i n gi ss u i t 曲l ef o r m o s tr e 则沁m e n to ft h eg 。n e 强1w e b 剥i c 破至洫t h ef u n c t i o n ,或m c t u r ea n d 弘哟拍a n e eo n t h eb a s i so fm e 似ok e ym e c h a n i s m so ft h es p m 唔b e c a u s eo f 淞c h m c t e r i s t i c ,n o tj n v a d j n g , 摄e 抛l e w 。f ks 州挂ge 勰e o n v e n i e n t l y 秘i e 拶a 嚣w 谗l 秘i & 翔矗钯。鬏m 8 p p l 珏g ,畦s 醚f o rt h e r e p l a c e m e n t0 fe n t i 哆b e a ns 0 1 面o n a n dt h e nt h e a 脯1 0 rt a l c e st h ep u r c h a s es u b 姆暑t e m n 嚣a 珏x o 毪gl tc 。搬p 鞠ye r pg s t e m8 s 鞠螺a 王珏p l e ,e o m 剐n gw - 氆氆ew e 盎妇e s so f n n 砌e w o r k ,锄dt 1 1 e np r o p o s e st l l er e f 拈h i o n m tu s i n gs p r i n g + h i b e m a t ei nt h i ss y s t e l n ,w c h 艇l ys b 蝴s 氇ef l 崩鞋l 毋鼹s 掰瓣,髓e 蠡锄。w 。虫p 嬲d e sa 廷l n d 。f 番盼i ns o l 疆i o n , ti s 掷 s a yd l a td i 丘b r e n tm o d u l e sc a nb eu s e dd e p e n d i n go nd i f 掩r e n tr e q u i r e m e n t s l i k es t r u t s ,s p r i n g p v i d 锚酗ds 珏p p 啦t 。m v e 精硝氆e 强墩ep r e s 韵挽蛀o n 融w l i 馥铀nb 。凇醯毫sa f 陆n e w o r ki np r e s e n t a t i o ni a y e rm e 黼w h i l ei to 脯r sp o w e m ns u p p o r ti nb u s i n e s sl a ,e r b yi t s e h 挺a 曲样o f n v e f s o no f c o 样打o l ,e s p e c 8 l 差y 氆。群l 掊m e t e r 蛳l s t i o nm 鞠a g o 翔e n t 糟l y i n go nt h e c o n t a i n e ri n t e g r 砒i n gw i t ht h 。o ,rm a p p i n gh i b e m a t e ,w h i c hm a k e st h eo p e r 砒i o no fp e r s i s t e n t l 斜e rm o r ec o n v e n i e n t f 讯a i l y ,出e 酬啦o rc o m p a 弛st h ep u r c h a s es u b s y s 专e mn o t s i n g 蹦y 疔a f n e w o r k 蚰dt 1 1 er e c o n s t r u “i o nw i t hs p r i n g 十h i b e m a t et oe x p l a i nt i ed i 廿b r e n c e sb e t w e e nt h e t w ok i n d s k e y w o r d s m v c ;i o c ;a o p ;o ,rm a p p i n g i l l 独创性声明 本人声明所呈交的论文是我个人柱导师指导下进行的研究工作及取得的研 究残暴。尽我联箱,除了文孛褥澍燕戮拣注窝竣凌翡逡方终,谂文中不篷含英绣 人已经发表或撰写过的研究成果,也不包含为获得北京工业大举或其它教育机构 的学位成证书黼使用避的材料。与我一间工作鲶蔺志对本研究所傲静佼侮贡献均 已在论文中作了明确的说明并淡示了谢意。 签名:鎏照整日期:丝! 盘:垡 关于论文使用授权的说明 本人完全了薅趣索王翌大学骞关爨鏊、壤瘸学往谂文戆飙党,帮:学校毒援 保留遂交论文的复印件,允许论文被查阅和借阅:学校可以公稚论文的全部或部 分内容,可| 鬟采用影露、缩窜躐萁谴复翻手敌谦存论文。 ( 保密的论文在解密后应遵守此规定) 签名:望& 然导缪签名:童基垒垒强麓:乏:! :! :! 矿 1 1 课题背景 第1 章绪论 随着h t c m e t h i 廿m c l 和w 曲技术的发展,w 曲应用系统在h n e r n e t 上的 使用也越来越广泛。w 曲应用不再是仅仅具有静态发布信息的简单功能,而是 被要求具有实时动态处理交互信息的能力,此要求还在不断的变化和提高。正 因为如此,如何才能方便、快捷地开发出具有高效性、灵活性和易扩展性的w 曲 应用系统也就越来越成为一个倍受人们关注的课题。 在一般情况下,一个实际的w 曲应用系统是由多个开发人员,依据各自的 任务,采用不同的技术进行协同开发而成。但是,在目前的许多实际项目的开 发过程中,由于缺乏一个规范的编程开发模式,各部分开发人员之间缺乏充分 的交流而导致出现互相影响、互相制约的局面,造成系统开发、集成与维护的 成本的上升。因此,为w 曲应用系统的开发引入一套规范、合理、有效的开发 模式就显得尤为重要了。而m v c ( m o d e l “k c o 曲o l l 目) 模式凭借其具有 的模型和显示分离、由控制器进行流程控制等优势,符合了当前w 曲应用系统 开发的基本要求,已逐渐成为开发w 曲应用系统的主流模式。 然而,用j a v a 建造一个就算不是很复杂的w 曲应用也不是件轻松的事情。 怎样建立用户接口、在哪里处理业务逻辑、怎样持久化数据这些重复的问题几 乎困扰着每一个w e b 应用程序开发者。为了减轻开发者处理复杂问题的负担, 并且将开发者从编码中解放出来,使其能专心于应用程序的逻辑,于是人们想 到能否通过从实际项目开发经验中抽取出一个可高度重用的应用框架来解决上 述问题。而要从头设计并开发出一个可靠、稳定的框架并不是一件容易的事。 幸运的是,随着w 曲开发技术的日趋成熟,在w 曲开发领域出现了一些现成的 幸运的是,随着w 曲开发技术的日趋成熟,在w 曲开发领域出现了一些现成的 北京工业大举工学磺士学位论文 优秀的框架,开发卷可以直接使用它们。目前比较好的m v c 框架老牌的有 s 加t s 、w 曲w o r k ,新兴的有s p 赢gm v c 、脚e s t r y 、j s f 等。这些概架都提供 了鞍好的层次分隔能力。葡辩,在实现蘸好酌m v c 分隔的基础上,框架还通 过提供一些溅戒的辅助类露键进了生产效率的堤悫。 。2 课题来漂 在笔考磷究生除段,磐经参与天雄辩爨窍限公霭戆e 袋p 系统懿瑟发。该 h 世系统采用j 2 e e 技术平台,除财务模块外,其他模块均采用当前流行的b s 结构。对于歼发w 曲应用,游系统熬体架构设计不合理,会带来许多的苦恼, 诺懿结毒每不渗鬻,我褥湛氛、模块戆浚复蠲、系统壤浚扩袋、维护。鼙篌系统 最后运行起来,开发的代价墩运远超过了成本。 在该系统的实施过程中,并未使用任何流行的基于m v c 模式的应用程序 框檠。由于齐源框黎豹源代褥开放,作者通_ i 建对当前流行豹,如s 拄u t s ,s p r i n g 等应爆程序攥絮进行驰深入磷究,发瑷了原鸯系统懿不足之处,劳欲终合印妇g + h i b e m a c e 对原有架构进行改进。框架究竟能为系统的实现与维护带来何种好 处,它是如何构建以实现这些好处的,这些都是作者关注的焦点。 1 3 课题研究的目的及意义 构架一个w 曲应用需要再明白好多问题。幸运的是,有不少开发者已经遇 到过这类藤题,著登疆经考翦入建竞了处瑾这类翊熬熬疆絮,嚣蓠魄较流学静 应用程序框架有s 廿u t 8 、s p r i 端等。髋s 蜘n g 丽言,它提供了一个棚当灵活并 且可扩展的m v c 实现,除此之外,s p r i n g 将一直备受关注的古老而又时兴的 l ( 郯控割爱转) 设计理念融天了橙絮鹃设计串,逡使得组件翡重并i 概率褥副 了提辩,为系统搭建了一个灵活、可扩展的平台。然秀,s p 矗糕g 框絮浸为出彩 第l 章绪论 的设计还要属基于a o p 实现的事务管理机制。s p r i n g 实现的基于容器的事务瞥 理枧剑,必程痔提供了超娄黪灵滔牲,目黠鑫为将事务委托绘容器管理,应鬟 程序中无需再编写事务代码,这大大节省了代码量。不仅如此,借助s p 血唔丰 富的类库,开发者的开发过程中也烽大大数减少编玛爨。 本谦邀将在“天罐科贸i t 商照酹潆系统”的具体开发实践中采用s p 幽g 框 架,来研究和探讨如何给应用程序分屡、如何建立架构,磐旦怎样让餐个应熙 层保持一致;翔旃利用框絮静优豢使褥每一层戳一稀桧散耦合静方式彼此作溺 而不用管底层的技术细节。该课题的目的和意义在于利用s 曲g 橼架搭建w 曲 应用,使德程序整体结构溃噘,代码量大大减少,系绞鹁霹重鼹黢纛维护性大 大加强,获而减轻w 曲应厢程序开发者的负担。 1 4 论文的主要研究点 目前已有许多成熟的m v c 框架,s p r i n g m v c 在这些框架中处于个怎样 的位置呢? 如何使用s 蠲醯g m v c ,使冀憋健递剡网络鬈斡参数透明地号、监务对 象绑定并返萄适当的页丽,同旨于提供校验与错误处理的功能? 控制器如何被选 择采处理某一需求,而表示页面又是如何被选择来显示输出的呢? s p 嘲g 从其 孩,瑟畜,是一个援( 依赖注入) 容器,魄是一季牵无畿入式静框鬃。s p r i n g 框 架怒如何确保其无侵入性同时实现其依赖注入机制的昵? 豳前a o p 怒一个十 分热门的话题,s p 斑g 提供的内景a o p 支 寄,是基予键耪掘铡实瑰熬? 妇籍依 赖s p 商g 容器采进行参数纯的事务管理? h i b e r n a t e 在开源的持久层框槊中无疑 占据了摄为鲜亮的角色,而s p r i n g 又是如何对h i b e m l t e 进舒支持的昵? 在数据 痒掩久瀑,笔者弓| 入了h i b 懒a t e ,探讨如褥将印赫g 挺粱与壬重i b e m a t e 送行整 合从而实现o 服m a p p i n g 的功能。论文将根据天雄科贸有限公司e r p 系统为实 例馓以上讨论。 北京工业太学工学硕士学位论文 1 5 论文的结构 第一章简要地介绍了课题背景、来源以及研究的匿的和研究点等。主要是 对论文的整体研究方向和在论文中可能涉及的内容做了高度和简明的概括。 篇二章曾先介缮了弪e 嚣架构静特点和多层模墼结构,继而阐述了在砼e e 体系结构中广泛流行的m v c 模式。为了提舞系统设诗开放的灵活燧、霹笺翅 性和可维护憔,在大多数j a v a 应用程序中郡使用了基于m v c 模式的w 曲应用 程序框架,从而弓j 入了s p 谳g 框架。 楚三章蓥先奔缨了工厂模式帮j 黼反射凝毒,这些都是疆缮秘酝g 挺絮夔 基石。接着介绍了s p n n g 的核心机制i o c 和a o p ,并且对s p r i n g 框架的持久展 加以扩展,阐明了面向对象设计和关系数据库设计两种设计范式的“阻抗夫谐” 薅系统设诗滚成熬戮滚,瓢褥弓l 天了瓣( 瓣象疾系) 获射豹概念,提警了采 用h 渤e m a t e 映射工其来实现持久层的方案。 第四章谶入采购子系统的功能分析和架构设计阶段。前毕部分分析了系统 所要实现豹蘩体功能和逻辑模型,之活以s p 咖g 开发框架为基础,根据j 2 e e 多层模型瓣续穆特点,对系绞各个部分进雩亍分层次貔设诗。文章援滋了s 翻瞻 框架最大的优点是对系统的光侵入性。在此熬础上,可以方便的与其它框架察 成构成一个完整韵w 拍开发框架。 第五章农论文捷密s 蠢端框架黟鏊穑上,蜜臻了天罐翳贸有限公霹e 襄p 系 统采购子系统的部分模块,以此验证本文的研究价馕,并且针对论文绪论中提 到的朱使用侄何w 曲应用框架所实现的系统作了比较,说明了使用了框架后的 系统窝现煞耱耱鲟延。 文章结尾处是全文的缝谂部分,总结了本论文职做鲍工佟、研究意义帮馀 值,并指出了研究中的不足之处,以及对今后的工作和研究方向的展望。 第2 章j 2 毪e 槊橱以及m v c 设计攘式 第2 章j 2 e e 架构以及m v c 设计模式 2 。1j 2 e 嚣基本桨构 2 。1 。 j 2 器e 概述 我舞今,众数嚣要扩鼹缝锕懿服务领域,簿低服务所需成本并且在为客户、 雇员和供应商提供服务时将尽照缩短反应时间。 典型来说,提供这些月受务戆应用程序必须将已经存在的金数信惑系统( 暑王s ) 与渣务的新功雒需求相结合,这些新的功能需求使得所实现的服务能够被更为 广泛的用户群体所采纳。所实现的服务通紫需器具毒以下特征瞄1 : ;高度可耀萑,溺于满足当今全球韭务环獍的需簧。 + 安全性,用来保护用户的隐私和企业的宪整性。 t 霹依羧性魏霹扩震建,弱来壤缳、韭务层弱事务被精确逐速穗完成。 在大多数情况下,企业服务是作为多艨应用程序来实现的。中间层将已存 在的企业信息系统和实现掰的服务所需的业务功能与数据整合为一体。成熟黪 弼络技术溺来为第一层,帮客户层提供更加方便快捷酌方法与复杂的渡务层相 连接,并且基本上消除了或者大大的减少了用户的管理。 j 臻e 平台减低了多层痰用模型开发戆成本帮复杂经。j 2 e 嚣庭焉程序阿被 快速开发并且轻松地得以扩展加强以便企业在面临竞争压力时做出及时的反 应。 j 2 班 的核心是i 越浚平台或酗蛾平台的标准版,其不仅巩固了标准版的 优点,同时还提供了对e j b ,j a v as e l e t s a p i ,j s p 以及旺技术的全甄支持。 其最终鞭昧就是缩缀企挂l 鑫务掰需煞应耀程序纤发帮投入市场的时间f 瑚。 j b 赢工业大学工学碗士学位论文 2 1 。2j 2 e e 体系结构 图2 一l 盥示了j 2 e e 平台体系结构中各个元素之间的所需的相互关系。该图 显示了各个元素之间的逻辑关系,戗这不一定意味着每一层元素在物理上位于 单独的计算辊体系中。 在图中耀独立魄矩形淡示鲍容嚣是必应震程廖缀 牛撼供霉要的鼹务蜓 j 2 e e 运行时环境,应用程序中各部分的组件由各个锻形上半部分所承。图中矩 形下半部分指出的是各部分所提供的服务。例如,威用程序客户层容器为应用 程序客产端掇供了强l sa 王强,还舂阉孛所示戆一些獒经戆服务。 图中的箭头代表了j 2 e e 平台上器个部分之间所需要的相互联系。为了与数 据库系统连接,通过j a v a a p i ,即m b c a p i ,应用穰序客户端容器为应用程序 客户端提供了与j 2 嚣嚣新需静数据蓐嶷接赘遗接。遥_ i 熏两络鬃容器帮e 疆容器, 同样的连接墩被提供绘j s p 页匿、s e r v l e t s 鞠企业级b e 越毽。 如图所永,各种类型应用组件的a p i 均以由j 2 s e 运行时环境所支持的舱s e a p i 为基础。 第2 章j 2 e e 架构以及m v c 设计模式 图2 一lj 2 e e 体系结构“9 1 f i 翱糟2 lj 2 e 基蛾鞋t e 魄辩 1 9 l 2 。1 。3 舱e e 多层模型及应用程序组件 2 ,1 3 1 客户鼷及其绻件 客户层运转在客户端扭器上,月予与企业偿息系统的援户遴行交曩以及显 看鼍根据特定商务规则进行计算聪的结果。基于j 2 e e 规范的客户端可以是基于 耗b 的,也可以是不基于w e b 盼独立应用程窿。 客户端痤援程疼逶掌毒j a v a 程痔港言壤霹,典鍪戆程寒惫糕在寨瓣邀薤上 执行的g u i 程序。应用程序客户端为客户提供一种与使用原始的客户端程序相 似的体验,并臆能够感受到所落j 2 e e 中间层所带来的好处与便利。 却p l e t 赠怒一释基蓬的在潮络溪焚器孛运行瓣g t 矬缠释,闲薄也霹鞋在支 持a p p 搬程序模型的许多其他应用程序或设备中执行。a p p l e t 珂以用来为j 2 戏 应用程序提供强大的用户界面( 简单的h t m l 页面也可以用来为j 2 e e 应用程序 北京工业大学工学硕士学位论文 提供更多有限的用户界面) 。 2 1 3 2 网络层及其组件 w 曲层运行在w 曲服务器上,s e n r l e t ,j s p 页面,过滤器和网络事件监听 器是典型的在w 曲容器中执行的网络层组件,用来响应来自于网络客户的 h t t p 请求。s e r v l e t ,j s p 页面和过滤器可以生成作为应用程序用户界面的h 删l 页面,还可以生成咀l 文件和被其他应用程序组件使用的不同数据格式的文 件。一种特殊类型的s e r v l e t 提供对使用s o a p ,h t t p 协议的w 曲服务的支持。 运行在w 曲层中的w 曲组件,依赖w 曲容器来支持诸如响应客户请求以 及查询e 鹏组件等功能。w 曲层同样可以包含一个j a v a b e 姐组件以管理用户的 输入并将输入发送到对应的e 旧中进行处理。 2 1 3 3 业务层及其组件 业务层运行在e 晒服务器上,在基于j 2 e e 规范构建的应用系统中,将解 决满足特定业务领域商务规则的代码构建称为业务层中的e j b 组件。e 腰组件 运行在支持事务管理的环境中。在j 2 e e 的应用中,典型的企业级b e a n 包含了 业务层逻辑。企业级b e 锄s 可以通过s o a p 册t t p 协议直接提供w 曲服务。 e j b 组件可以从客户端应用程序中接收数据,按照商务规则对数据进行处 理,将处理结果发送到企业信息系统层进行存储,从存储系统中检索数据以及 将数据发送回客户端等功能。 部署和运行在业务层中的e j b 组件依赖于e j b 容器来管理诸如事务、生命 期、状态转换、多线程及资源存储等。这样,由业务层和w 曲层构成了多层应 用体系中的中间层。 第2 章j 2 e e 架构以及m v c 设计模式 2 1 3 4 企业信息系统层 企业信息系统( e i s ,e n t e f p r i s ei n f o 衄a t i o ns y s t e m ) 层运行在e i s 服务器 上,在企业应用系统的逻辑层划分中,e i s 层通常包括企业资源规划( e r p ) 系 统、大型机事务处理( m a i n 妇n et r a l l s a c t i o np r o c e s s i i l g ) 系统、关系数据库系 统( r d m s ) 及其它在构建j 2 e e 分布式应用系统时已有的企业信息管理软件。 2 2m v c 设计模式 2 2 1m v c 概述 当应用程序将数据访问层代码、业务逻辑层代码和表示层代码混合在一起 时,有一些问题就随之产生。例如,各个组件之间的相互依赖关系,使得程序 中任何一个地方所作的改变会引起一连串的连锁反应,这样的程序难以维护。 高度的耦合性使得一个类很难甚至基本上不能够得到重用,因为它要依赖许多 其他的类。如果添加新的数据视图,就需要重新实现或者剪切或复制业务逻辑 代码,并且需要在不同的地方进行以上操作。数据访问层代码面临同样的问题, 需要在业务逻辑方法中进行剪切或者复制。 为了解决上述问题,s u n 公司推出了j 2 e e 平台上的m v c 设计模式,m v c 是m o d e l v i e w c o n 打0 1 1 e r 的简称,即模型视图一控制器【4 。通过将数据访问、业 务逻辑和数据表示与用户交互之间解耦降低了各层代码之间的联系。目前m v c 模式受到越来越多的w 曲开发者的欢迎。 在j 2 e e 平台上的应用程序中采用m v c 体系结构,将核心的业务模块功能 与利用了该功能的表示层和控制逻辑相分离。这种分离使得更多不同的视图可 以使用同一个企业数据模型来显示,并且支持不同类型的客户更加便利地进行 实施、测试和维护。m v c 把应用程序分成三个核心模块:模型、视图和控制器, 北京工业太学工学硕士学位论文 它们分别担獭不同的任务。网2 2 摄示了这几个模块各自的功能以及它 f 的相 互关系。 方法瀵孀一卜事传 图2 2 州c 设计模式 嚣辨糟2 - 2 粥v e d e s i g 瓣歌瞎嘲t 鞠 2 。2 2s p 渤g 删概述 m v e 应用程痔框架能够极大地简化j s pm o d e l 2 规范的应用程序的实现。 鑫懿基毒谗多残熬戆綦手m v c 设诗攘型鲍痰惩程廖挺絮,s 癜珏g 藏是其中之 s p 咖g 椴架提供了一个插入式的m v c 体系结构。用户可以选择使用s 州n g 痘麓程序框架或者继续使爱辍有豹辩络层应奔l 框架【 2 l 。s 鹾鹕框絮将控裁器、 模型对象、分派器和处理对象的角色分离,傻得在s 磷n g 框架中更容易自定义 以上备个角散。在s p 廊g 框架中,视图是未知的,即s 砸n g 框架并不强迫使用 者只能够使桶j s p 贾蔺作为漫示的税强。使用者可戳有更为爱活的逸择,比如 尾j 、x s 誉,v e l o c 娃y 模舨等提供照示购携图。 第2 章j 2 e e 架构以及m v c 设计模式 匿2 3s 弦i n g 灏e 工佟过程“ f i g u r e2 3 也ew o r k f l o wo f s p n n gm v c 图2 ”3 描述了s p m gm v c 的工作过程,这是以用户发送的r e q u e s t 请求作 为开始的。s p i i n g 框架使用d i s p a i c h e r s e l e t 来接受此请求并且控制r e q u e s t 请 求鹣转发。豫大多数墓予j a v a 鹣凇c 糕絮一襻,s p f i n 菖氧垂v c 褥请求传遴萄一 个单独的前端控制器。使用前端控制器怒w e b 应用中秸普遍的模式,前端 控制器代理了对应用程序其他组件的请求,执行实际的处理。d i s p a f c l e r s e n r l e t 就是这个前端控铡器。 负责处理r 。q u e s t 请求鳇s 蟛n g 谢c 懿缝馋是控铑l 器。d i 警a t c 搬s 嚣订e t 通过查询h a n d l e r l 讧a p p i n g 中的m a p p i n g u 也来指定由哪个控制器来处理r e q u e s t 请求。d i s p a t c h e r s 刊e t 获得控制器对象厢,就将请求转发到控制器去实现业务 逻辑瑟浚诗要完成黪镁务。竞残韭务逻辑露瓣任务菇,控潮器返潮个 m o d e a n d v i e w 对象给d i 印a t c l l e 拣e l e t ,这个m o d c l a n d v i e w 对缘或者宙有一 个e w 对象或者一个e w 对象的逻辑名称。如果m o d e l m l d v i e w 含有的是 裁京工业犬学工学硕士学位论文 e w 对象的逻辑名称,那么d i s p a t c h s e r s e r v l e t 会鹰询v i e w r 露s 0 1 v e r 来决定返回 给用户的响成。最后,d 卸a t c h e r s e r v l e t 根据m o d e l a n d e w 里所包含的v i e w 对蒙为客户端返回邋当静晌斑旧。 警然我们还应该注意裂,s 舜n g 框架对予w 曲威尾程序嚣发魄支持,不仅 仅局限于m 、,c 部分,即使不使用m v c 实现,也可以从其他的组件,例如事务 控制、o r m 模版中得益。同时,s p 渤g 也对其它的框架提供了良好的支持。 2 3 本章小结 本章的纤始讨论了基予j 2 e e 平螽的w 曲应用体系结构以及j 2 e e 多层模型 戆黪纛。接下来号| 入了珊c 设诗模式。在氧耋v e 设嚣模式中,应蔫程序旋强裁 划分为三个核心部 牛:模型、视图、控制器。他们备自处理自己的馁务并且有 效的实现了数据层与表示层的分离,从而提高了系统设计开发的灵活性、可霞 霜悭鞫哥维护牲。 通常在开发系统爨重要从头实现一套基予m v c 模式兹w 曲框絮是 e 较嚣难 的工作,也完全没有必要这么做,因为现有的w 曲椴架已经很多。针对具体项 目选择一个合适的框架,或者更迸一步裁剪、订做合适项目需要的框架才是合 适黪傲法。 本章介缨了州c 模式的特点,并鼠在最厩引入了s p r i n g 框架,将会在第三 章中对它进行详细的介绍。 第3 章s p n g 应用程序框架 s 皿n g 框架是目前比较流行的开源的应用程序框架。实际上己经存在许多 开放源代码的j 2 e e 框架,笔者在天雄采购子系统的实现中选用了s p 血g 框架 作为研究的基础,是经过了充分的考虑与比较的。s p 血g 框架与其它w 曲应用 程序框架相比有咀下几个独特的特点:它关注的领域是其他许多流行的框架所 未曾关注的:s p 出喀框架提供的是一种管理业务对象的方法;它既是全面的又 是模块化的。s p 血g 有分层次的体系结构,这意味着能够选择仅仅使用它的任 何一个独立的部分;s p 如g 不会给工程添加对其他框架的依赖,因此它可以称 得上是一战式的解决方案,提供了一个典型应用所需要的大部分基础架构n 4 】。 s p 血g 最为核心的设计是b e a t l f a c t d ”】,它实现了i o c 模式,1 0 c 设计模 式实际上是工厂模式的一种升华,可以把i o c 模式看成是一个大工厂,只不过 这个大工厂里所要生成的对象都是在讧l 文件中给出的定义,然后利用j 越,a 的反射机制,根据x m l 文件给出的类名生成相应的对象。从实现上来看,1 0 c 就是把工厂方法里硬编码的对象生成代码,改为了由x m l 文件来定义,这样 就把工厂和对象生成这两者独立开来,这就是将调用者和被调用者解耦。1 0 c 模式实际上是工厂模式和反射机制共同作用的结果,因此要理解i o c 模式,首 先要理解工厂模式和反射机制。 3 1 工厂模式和,怂硝反射机制 3 1 1 f a c t o w 工厂模式 工厂模式专门负责将大量有共同接口的类实例化,其可以动态决定将哪个 类实例化丽不必事先知道每次要实例化哪个类。工厂模式有以下几种状态【3 1 : 类实例化丽不必事先知道每次要实例化哪个类。工厂模式有以下几种状态【3 1 : 北京工业大学工学硕士学位论文 1 简单工厂( s i n l p l ef a c t o r y o ) 模式:又称静态工厂方法模式( s t a f i c f a c t o i ym e t h o dp a “e m ) n 2 , 王厂方法( f a c t o r ym e 髓鳓d ) 模式:又称多态瞧工厂( p o l y m o 倒= l i c f 嚣c t o r y ) 模式或纛拟构造予( v i 蹴基c 8 饥l e t o r ) 摸式t 3 抽象工厂( a b 出a c tf a c t o r y ) 模式:又称正具箱( k i t 或t 0 0 l k i t ) 模 式。 每k c 魄较嚣富,它豹铗点在予童予类瓣生成代码写戮在疆澎孛,磐莱受 换一个子类,就要修改工厂方法。并且每抽象出一个接口,就意味藉将有更多 的工厂类生成。 s p r h 礓中静棱惑组释b e 勰f 8 c 钕y ,实璐7i o c 模式,窀依靠工厂模式为藿 础的同时大爨弓l 入了j a v a 魄反射机制,通过动态调用救方式避免了硬编码豹约 束。下面来阐述j ,a r e n e c t i o n 机制的实现原理。 3 1 2j a v a 反射机制( r e n e c t i o n ) 我们经常会遇到这种情况,使用j a v a 反射机制,问题被简单而又巧妙地解 决了。如果没有j a v a 反射税制,那么问题的解决起来就会又混乱又麻烦。 融蠡e c l i 激是j 嚣v a 被者撵是动态语言熬一令关键性霞,这个校铡龛谗獠黪 在运行时通过r e n e c d o n a p i s 获取任何一个融知名称的c 1 a 9 8 的内部信息。c l 躺s 是反射机制的起源。每个类都有一个c l a s s 对象,每当编写并编译个新类时 藏会产生一个e l a s s 对象,它被镖存在一个鬻名煞。o l a s s 文锌串。在遴程对,警 生成这个类的对象时,运行这个程序的j a v a 虞拟枫) 会确认这个类的c l a s s 对象是否已缀加载,如果尚来加载,j 就会根据类名查找c l a s s 文件,并将 萁载入,一鲢这个类钓c l a 8 8 对象被载入内存,它旒被嗣采翻建这个类的所有 对象,这样c 1 8 韶馒提供了动态装载莱个类懿毙力【4 2 】, 第3 帮s p 蛹应用穗烨框架 谯软件的设计邂程中,要充足地考虑到程序需求的变化,正如上文所描述 的一样,这种交纯程开发程序的锻初是稷难预见的。因此,让功能进行动态的 扩充十分必要。使用反射机制,可以让框架程编译时并不知道有哪些具体的功 爱,褥蒸俸懿囊麓楚可敬遥过酝漾文稃在运行辩凌态褥爨翡。s p 盎g 程黎就是 采用了这种技术,在运行时动态靛载b e a n ,提高了系统的灵活性和可扩展性。 殴上瓣工厂方淡窝燃襄e 壬l e c 蛀髓褪毒送行了阕述。在实际应翅孛,工厂 方法比较常见,而版是和动态装载类组合在一超使用,这也是i o c 实现的基础。 s 面n g 的f a c t d r y b e a n 就是工厂模式和动态装载类结合使用的优秀的例子。 3 2s p r i n g 核心机制一i o c 蓦日a o p s 娴嚼寞正懿麓牮霆它零l 爨孙c 模式实嚣浆b e 勰f a c 螂秘箕蘑鬟供鹣蠹鬟 a o p 韵支持。 3 2 。 l o c 瓣基本语义 i o c ( i n v e r s i o no fc o 的1 ) ,从字面上翻译就是控制反转的意思。它还有另 终一耱法,朝骰依羧注入( d 印黼d 懿c y 瑙e 撕o n ) 【3 求。辑谓控裁爱转,有一 种形象的说法,那就是好莱坞准则:你呆着别动,我会通知你【2 6 1 。1 0 c 的实质 是将传绞实觋孛由程序代玛壹接羧剃程序之隧的关系,转嶷必峦容器控露l 程序 之间的关系。在j a 、,a 开发中,】o c 模式意味着将开发者设计好的类交给系统去 控制,丽不是在类的内部控制,即将对象的创建和获取提取至i 外部,由雒部容 器提供需要盼维俘,丽不是由程净代码壹接控制,这也就麓所谭控制反转”的 概念,控制权从应用代码中转移到了外部容器中。i o c 模式解决调用者和被调 矮者之遮麓一秘袄羧荚系,无嚣在璃溪者我辫中涉及被璃蠲密麓其傣实瑷,获 而实现了调用者和被调用者的解耦。 j b 京工业太学工学礤曩:学位论文 3 2 。2 依赖注入的几种形式: 类型l :通过接口注入。此种类型是农接口中定义注入方法,在其子类中 实现该接口,为注入方法提供具体的实现。 t 类垒2 :通过设值注入。诧种类型的注入过獠是通过在该类中设置一个 s e t t e r 方法褥到赝依赖的类瓣僮。 - 类型3 ;通过构造自潍入。此种类型悬在要实现的类中定一个构造函数, 通过构造函数得到其所依赖的类,被依赖的必作为构造函数的参数被注入。 3 2 3i o c 设计模式在s p 咖g 巾的应用 s p f i n g 框架最蒸本的甑是o r 咎s p 抽g 触m e w o r k l b e a n s ,s p r i i l g 框架使用 j a v 瞒e a 珏,瑟这个毯键供了搽控j 鑫v 媾c 舔瓣大部努蒸奉功畿箨量提供了s p 妇g 框架中其他的类的基本架构。这个包还为实现s p r i n g 的依赖注入提供了基础。 程序开发者可以通过两种方法使用s p 血g 的依赖注入功能:使用 b e a 蚶a c t o r y 藏者a 鞭l i c a t i o n c o n t e x t 【1 3 】。b e a n f a c t o r y 是一个普通韵工厂类,它 保存了s 蟛耀中爨商b e 熊豹信患,共量允许使溪毒实例纯积管理b e 黼。 b e a n f a c t o r y 使得程序开发者可以非常方便地使用s p 廊g 框架最基本的特性。而 a p p l i c a t i o n c o m e x t 则建立在b e a n f a c t o r y 的蒸础之上,它继承了s p r i n g 框浆最 基本熬特煌。狳了这些基本褥性终,宅还提供了其豫辫撩豹特经,魄鲡事传管 理、国际化支持和资源管理等。 b e a i 】f a c t o r y 在关注内存的情况下使用题非常有用的,它掇供了s p i i n g 框架 基零特洼。邋常在,臻蕊嚣笈环境串经稻a p p 珏e a i i o n c o n 溆t ,因为它不仅赘供 了b e a n f a c t o 猡所提供的基本特性并鼹额外黔加了一热自己的特性,麓且还掇供 以声明的方式使用一姥功能。 第3 章s p 咖g 艇用程序挺架 3 2 4a o p 概念的产生 s p d r 喀另一个核心概念是a o p ( a s p e c to r i e n t e dp r o 鲥硼【1 1 1 i n g ) ,即a s p e c t , 翻译成中文是“方面”的意思。而在a o p 中,应更多地理解为“切面”。所谓“切 溪”是一耱薪煞模块纯愚怒,它蔫瓣象操 棼过程中鹣一个锻瑟,麓来箍述分敖在 对象、类和函数中的横切关注点。 a o p 实际是g o f 四人组设计模式的一种扩展,设计模式所追求的是降低代 鞴之闻静藕合度,增怒程序静灵活性和可重用经,a 0 p 实际上就是设计模式所 遗求鲍凳标斡一瓣实现。掰谓鲍分离关注就是将墓一逶攥静嚣求凌麸不提关 的类之中分离出来;同时,能够使得很多类共享个行为,一旦行为发生变化, 不必修敌很多类,只要修敬这个行为就可以。a o p 就是遂种实现分散关淀的编 程方法,它将弓电注鬟装在“方嚣”孛。 与面向对象编程不圊的是,a o p 是针对业务处理过稷中的切面进行提取, 例如,某一个操作在各个模块中都有涉及,这个操作就可以看成“横切”存在于 焱统当中。在许多情况下,这些操作都蔻与韭务逻辑穗美性不畿躐者不褥于逻 辑操作的必须部分,两甏肉对象方法很难对这静憾况傲爨处理。a 0 p 受将这些 操作与业务逻辑分离,使程序员在编写程序时可以专注予业务逻辑的处理,而 剃用a o p 将贯穿于各个模浃间韵横切关涟点自动耦合进来。其核心思想怒将应 周程序孛豹选务逻孽鹭处臻整分固黠其提供支持骢逶瘸鞭务,鄂聚璃的“攘韬美注 点”进行分离,这魑“横切关注点”贯穿了程序中的多个纵向模块的需求。仔细理 解登录功能就不娥理解,殛录功能就可以看作是横穿在系统中的横切关淀点。 3 2 5a o p 思想在s p r i n g 框架中的体现 文章前面已经讲述了a o p 的概念以及什么叫做所谓的“横切”关注点,事务 北京工业大学工学硕士学位论文 管理就是j 2 e e 应用中一个横切多个对象的横切关注点的例子 2 3 。 3 2 5 1 事务管理 对于j 2 e e 应用程序而言,事务的处理一般有两种模式:依赖特定事务资源 的事务处理与依赖容器的参数化事务管理 1 2 】。在论文中略去对第一种处理方式 的说明,直接对第二种方式,即依赖容器的参数化事务管理来阐述笔者的观点。 对于传统的基于事务资源的事务处理而言,s p 血g 并不会产生什么影响, 我们照样可以成功编写并且运行这样的代码。而对于依赖容器的参数化事务管 理而言,s p r _ m g 则可以用来帮助实现对事务的管理而无须使用e 鹏。s p 血g 本 身也是一个容器,只是相对e 喝容器所要付出的代价而言,s p 血g 属于轻量级 容器,它能够替代e j b ,通过使用a o p 来提供声明式事务管理,即可通过s 皿n g 实现基于容器的事务管理( 从本质上来讲,s p 血g 的事务管理是基于动态a o p ) 。 s p r i n g 与e j b 最大的区别在于:第一,s p 血g 可以为任意的j a v ac 1 船s 实现事 务管理而无须转换成标准的e j b ;第二,s p r i n g 事务参数化事务管理并不依赖 特定的事务资源从而使得系统的应用与部署更佳灵活。 3 2 5 2 动态代理机制的实现 s p 咖g 框架中所提供的a o p 支持,是基于动态a o p 机制实现的,即通过 动态代理( d y n 锄i cp r o x y ) 模式,在目标对象的方法调用前后插入相应的处理 代码。a o p 代理可以是基于d k 动态代理,也可以是基于c g 】j m 代理。s p 咖g 默认使用的是基于j a v a d y n 锄i c p r o x y 模式实现,这样任何的接口都能被代理。 基于s p 血g 框架的应用程序开发,程序员会有一种自然的倾向性来实现面向接 口编程而不是类,业务对象通常也是实现一个或者多个接口,这也是一种良好 的编程习惯。s p 渤g 也可以基于c g l m 实现a o p 代理,这样所代理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度GRC建筑一体化施工合同模板
- 2025年智能环保型住宅建设技术转让合作合同
- 2025版煤炭居间代理合同样本
- 2025版能源公司股权无偿转让及节能减排合作合同
- 二零二五年度第十一十二章行政项目监理服务合同标准
- 二零二五年度离婚协议书定制及情感咨询合同
- 二零二五年度短途货运时效与违约赔偿合同
- 二零二五版39上公司兜底协议:海洋工程合作保障合同
- 二零二五年度集装箱板房租赁及社区活动服务合同
- 2025届“建”证梦想·成就非凡中建装饰集团西北公司校园招聘笔试参考题库附带答案详解
- FZ/T 07015-2021绿色设计产品评价技术规范再生涤纶
- 基于课程标准的融合教育教学评一致性实践探索
- 核电质量保证-质量体系培训课件
- 企业家的12把财务砍刀讲义课件
- 满堂脚手架方案
- DB32T 4353-2022 房屋建筑和市政基础设施工程档案资料管理规程
- 原型量表测试表
- 审核首次会议发言稿
- 煤矿机电与运输提升安全管理.ppt
- T∕CGSS 004-2019 适老营养配方食品通则
- 碳碳复合材料课件
评论
0/150
提交评论