




已阅读5页,还剩83页未读, 继续免费阅读
(电力电子与电力传动专业论文)基于j2ee平台的航次模块及物修模块的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
a b s t r a c t w i t ht h ed e v e l o p m e n to fn e t w o r kt e c h n o l o g y , a n dd u et ot h em a i n t e n a n c eu p g r a d e sm e r i t sa n ds oo n ,t h e s t r u c t u r eo fm a n a g e m e n ti n f o r m a t i o ns y s t e m sb a s e do nb s g r a d u a l l yb e c o m et h em a i n s t r e a m 1 1 挎 d e v e l o p m e n tw h i c hi sb a s e do nc sa r c h i t e c t u r ea n dp r o g r a m m e db yt h el a n g u a g eo fv i s u a l b a s i ci sr e - p l a n n e d i nt h i sp a p e r n e we r ao f s h i p p i n gm a n a g e m e n ti n f o r m a t i o ns y s t e mi sb a s e d o nb sa r c h i t e c t u r e ,d e v e l o p e db y j a v al a n g u a g e t h es y s t e mi sm e t t i n gt ot h er e q u e s to ft h et r e e - t i e r e ds t r u c t u r eo fm a n a g e m e n ti n f o r m a t i o n s y s t e m s l i g h t w e i g h tf r a m e w o r k sa l eu s e df o rt h ed e v e l o p m e n to ft h es y s t e mi nt h i sp a p e r t h es y s t e mi sd i v i d e d i n t ot h r e el e v e l s t h i sp a p e ru h i b e r n a t ef r a m e w o r ka n di b a t i sf r a m e w o r ka sd a t ap e r s i s t e n c e i nb u s i n 嚣曩 l o g i cl a y e r , t h ep a p e rm a i n l yu 8 et h es p r i n gf r a m e w o r kf o rd e c o u p l i n gt h es y s t e m h lt h ei n t e r r a c i a ll a y e ra n d t h ec o n t r o ll a y e r , t h es y s t e m 嘴s t r u t sf i a m e w o r kw h i c hi sc l a s s i c a lm o d e la n di sb a s e do nt h em v cf r a m e w o r k i no r d e rt oi m p r o v et h eu s e re x p e r i e n c e ,t h es y s t e mu s ed w rf r a m e w o r kw h i c hi sb a s e do na j a xt e c h n o l o g y t h r o u g ht h eu s eo ft h e s ef r a m e w o r k s ,t h es y s t e ml e v e li sm o r ec l e a r l y , a n dt h ec o u p l i n gi sa l s og r e a t l y r e d u c e d i nt h es e c o n dc h a p t e r , t h ep a p e rm a i n l yi n t r o d u c e st h es t r u c t u r a lc h a r a c t e r i s t i c so ft h e s es e v e r a l f r a m e w o r k s ,a sw e l la st h ec o m b i n a t i o nw i t ht h es y s t e mi ns 懈a p p l i c a t i o n f o re x a m p l e ,t h es t r u t sm v c m o d e lc o r r e s p o n d st ot h es y s t e mf o rt h em o d e l ,v i e wa n dc o n t r o l l e r i nm o s tc a s e s ,m o d e li nt h i ss y s t e m c o r r e s p o n d st ot h em o d e lf o r m , a n dt h ev i e wc o r r e s p o n d st ot h ej s pv i e w , a c t i o nc o n t r o l l e rc o r r e s p o n d st ot h e s p e c i f i cc a t e g o r i e so fd o c u m e n t s s p r i n gi sa g a i nc o m b i n e dw i t ht h ea p p l i c a t i o no ft h es y s t e m i nt h i s s y s t e m ,b o t ht h ed a t al a y e ro fd a o , o rt h es e r v i c el a y e r , b u ta l s oi n c l u d et h ec o n t r o ll a y e ro fa c t i o na r cr e g i s t e r e d a ts p r i n gb e a nf a c t o r y t h e s ec l a s s e sa 他i n s t a n t i a t e db yx m lc o n f i g u r a t i o nf i l e n i si ss p r i n g sd e p e n d e n c y i n j e c t i o nm o d e l b ya d o p t i n gt h i sa p p r o a c hw e c a ns i g n i f i c a n t l yr e d u c es y s t e mc o u p l i n gd e g r e e n i sp a p e rf o c u s e so i lt h ec o m i n go fa g eo fs h i p p i n g - r e l a t e dn e e d sa n a l y s i ss y s t e m n e e d sa n a l y s i s i n c l u d es h i p p i n gm o d u l e o b j e c tm o d u l er e p a i rc o s t s m l i c hm a i n l yi n c l u d es h i p p i n gm o d u l es h i p p i n g i n f o r m a t i o nd i s p l a ym o d u l e ,s t a n d a r dm o d u l e ,a sw e l la sn o n s t a n d a r dv o y a g ev o y a g em o d u l e t h e nt h i sp a p e rd e s c r i b e sas p e c i f i cs u b - m o d u l es y s t e md e s i g np r o c e s s 1 1 1 es y s t e md e s i g nc a r lb eb r o a d l y d i v i d e di n t ot h r e e t i e rs t r u c t u r e n a m e l yt h ei n t e r f a c el a y e r , b u s i n e s sl o g i ct i e ra n dt h ed a t al a y e r s 1 1 地a r t i c l e m a i n l yi n t r o d u c e st h e c o m m a n dp a r e r n ,t h ea p p e a r a n c ep a r e r n ,a n dt h ec h a i n o fr e s p o n s i b i l i t yp a r e r n i l lt h e i n t e r f a c ed e s i g np r o c e s s ,t h es y s t e ma l s om a k e sf u l lu s eo ft h ej a v a s c r i p tl a n g u a g e ,a n dc s st e c h n o l o g y a td a t a l a y e r so ft h i sp a p e r , w em a i n l yi n t r o d u c et h et e c h n o l o g yo fh i b e r n a t ea n di b a t i s ,a n dh o wa r et h e yu s e di nt h e s y s t e m a sw e l la st h er e a s o n sf o rt l l e i rc h o i c e f i n a l l yt h ep a p e rm a k e sag e n e r a lc o n c l u s i o nf o rt h ew o r k ,g i v e ss o m ee x p e r i e n c e sa n dm a k e st h e c o r r e s p o n d i n go u t l o o k k e y w o r d s :s t r u t s ;s p r i n g ;h i b e r n a t e ;i b a t i s ;d w r ;b s ;t h r e e - t i e ra r c h i t e c t u r e ; d e s i g np a t t e r n ;d e c o u p l i n g i i 东南大学学位论文独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成 果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材 料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了 谢意。 研究生签名: 东南大学学位论文使用授权声明 东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复 印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。本人电子文档的内容和 纸质论文的内容相一致。除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布 ( 包括刊登) 论文的全部或部分内容。论文的公布( 包括刊登) 授权东南大学研究生院办 理。 研究生签名:导师签名:日 期: 第一章绪论 i i 前言 第一章绪论 国家交通部发布的公路水路交通“十五”发展规划提出交通信息化的总目标是:大力建设信 息基础设施,以信息化、网络化为基础,充分发挥公路、水路运输方式的优势,加快智能型交通的发展, 引导和鼓励公路、水路运输企业利用先进的信息技术,改变企业的管理、生产、营销方式,运用现代经 营方式和服务技术,改造交通运输传统服务业,构筑交通信息服务产业化的框架。 在国家大力倡导信息化带动工业化发展的背景下,作为国民经济重要行业的航运业,特别是在其 中占有较大比重的中小型航运企业如何适应这一发展形势,建立适合于自身发展的信息化模式和实施策 略,已逐渐成为相关从业人员关注的热点问题。在激烈的市场竞争环境下,信息化管理虽不一定能够立 竿见影地全面提升中小企业的竞争力,但却是提高企业管理和虑变能力的有效手段。在瞬息万变的国际 航运市场中,若忽视信息化建设,则会影响企业的长期发展。航运企业如果没有灵活的应变能力,将难 以保持竞争优势。 1 2 课题研究背景 随着网络技术不断发展,基于b s ( b r o w s e r s e r v e r ) 架构的m i s 系统逐步取代传统的基于c s 架 构的m i s 系统。在b s 结构下,用户工作界面通过w e b 浏览器来实现,极少部分事务逻辑在前端( m o w e r ) 实现,主要事务逻辑在服务器端( s e r v e r ) 实现,形成所谓三层3 - t i e r 结构。和传统的c s 架构相比,b s 架构具有分布性特点,可以随时随地进行杏询、浏览等业务处理。业务扩展简单方便,通过增加网页 即可增加应用服务功能。软件维护升级简单方便,集中布署就可实现让所有用户的应用同步更新。采 用资源共享技术合理地利用稀有资源( 数据库连接等业务组件对象) ,提高软件运行效率l l j 。 本研究课题是将原有的上海时代航运的基于c s 架构的m i s 系统重新实现为基于b s 架构的管理 信息系统。时代航运系统是一个使用多年的管理信息系统,将这样一个系统从传统的c s 架构迁移到 b s 架构,选择合适的开发平台是一个关键的因素。通过不断的比较我们选择了j 2 e e 平台。因为j 2 e e 平台具有可伸缩性,灵活性,以及易维护性等特点。同时j 2 e e 平台具有丰富的框架,比如s t r u t s 框架 等等。此外它本身还具有开源的特点,我们可以选择更多的插件。针对b s 架构的特点,我们选择了 s p r i n g + s t r u t s + h i b c r n a t c + i b a t i s 框架,s t r u t s 主要针对页面显示层,h i b e r n a t e 及i b a t i s 针对数据层, s 砸n g 作为整个系统的黏合剂。而由于本研究课题的延续性我们仍选择s q ls a v c r2 0 0 0 作为我们的应 用数据库。 1 3 课题研究的内容 本论文研究的主要目的是研究在新的软件开发技术下,建立一个基于b s 架构的航运管理信息系 统。本文涉及的模块主要包括:登录模块、系统主模块、航次信息模块以及物修费模块。 对于系统基础类的设计以及系统共用的技术由本人与项目组另外两位同学共同研究并分头设计, 本人工作包括系统主模块设计,航次模块设计,物修费模块设计。其中在主模块设计中,在树形动态下 拉菜单以及系统主菜单中为小组成员提供界面入口。同时涉及权限认证时调用另一位同学的设计类。在 解决导入e x c e l 、m l 导入导出以及作图的时候使用另外一位同学的解决方案。 由于系统涉及的方方面面的技术很多,包括服务器端技术、数据库技术、客户端技术以及客户端 与服务器交互技术。因此本论文主要针对以下内容进行研究和说明: 东南人学硕 :学位论文 1 h i b e r n a t e 数据持久层在系统中的研究及应用。 2 i b a t i s 数据持久层在系统中的研究及应用。 3 s t r u t s 控制层在系统中的研究及应用。 4 s p r i n g 框架在系统中的研究及应用以及与其它框架的整合。 5 a j a x 技术在系统中的研究及应用。 6 脚本语言以及d h t m l 技术在系统中的应用。 7 设计模式在系统中的应用。 8 开源软件及标签在系统中的研究、调试以及应用。 1 4 论文章节安排 本文先从相关的框架技术谈起,把握系统的整体架构,然后对系统进行相应的需求分析,最后针 对需求分析并结合上述的框架技术对系统的相关模块进行了分析、设计。具体的章节内容安排如下: 第二章主要涉及相关的框架技术在系统中的应用。具体包括s t r u t s 框架技术、h i b e r n a t e 数据持久 化技术、i b a t i s 持久化技术、以及s p r i n g 框架在整个系统中的整合使用。最后本章讲述了基于a j a x 技 术的d w r 框架为系统带来的良好的用户体验。 第三章主要是针对系统的几个模块,包括航次模块、物修费模块、系统主模块以及登录模块所做 的需求分析。 第四章主要是在第三章所做的需求分析的基础之上,对各个模块进行逐个的分析设计。在分析设 计各个模块时,综合使用了上述的各种框架技术以及各种设计模式。并且将相关的技术实现分散讲解在 各个模块中。模块主要是采用了三层模型,分别是对客户层( 客户层包括界面层和控制层) 、服务层以及 数据层进行的分析与设计。 结束语作为论文的最后一部分对系统整体进行了评述和总结,并对系统尚待完善的方面提出了若 干建议,并对基于轻量级框架的时代航运系统做出了些许展望。 2 第二章轻量级框架的分析及概述 第二章轻量级框架的分析及概述 2 1 表示层s t r u t s 框架概述及分析 2 1 1s t r u t s 概述 s t r u t s 最早是a p a c h ej a k a r t a 项目的组成部分。项目的目标是通过对该项目的研究,改进提高j a v a s e r v e rp a g e 、s e r v l e t 、标签库以及面向对象的技术水平。 s t r u t s 有自己的控制器c o n t r o l l e r ,同时整合了一些其他的技术去实现模型层和视图层,s t r u t s 的体 系结构和工作原理如图2 1 所示: 5 e r v l e t j s p 容器 囊哪b a 加f i 譬删 :、 w 由 视图 视图是用户看到的并与之交互的界面。视图向用户显示相关的数据,并能接收用户输入的数据, 但是它并不能进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接 受模型发出的事件更新事件,从而对用户界面进行同步更新嗍( 视图在本系统中即为j s p 页面) 。 模型 模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。 由于同个模型可以被多个视图所重用,所以提高了系统的可重用性( 模型在本系统中为m o d e l 类) 。 3 东南人学硕: :学位论文 控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求。当w e b 用户单击w e b 页面的提交按 钮来发送h t m l 表单时,控制器接收请求,并调用相应的模型组件去处理请求,然后调用相应的视图米 显示模型返回的数据。在s t r u t s 中控制器由a c t i o n s e r v l e t 类和a c t i o n 类来实现。a c t i o n s e r v l e t 类是s t r u t s 框架的核心组件。a c t i o n s e r v l e t 继承了j a v a x s e r v l e t h t t p h t t p s e r v l e t 类,它在m v c 模型中扮演中央控制 器的角色。a c t i o n s e r v l e t 主要负责接收h t t p 请求信息,根据配置文件s t r u t s - c o n f i g x m l 的配置信息,把 请求转发给适当的a c t i o n 对象。a c t i o n 类负责调用模型的方法,更新模型的状态,并帮助控制应用程 序的流程,在本系统中a c t i o n 充当界面请求和业务逻辑之间的适配器,其功能将请求和业务逻辑分开, a c t i o n 根据用户请求调用相关的业务逻辑组件,业务逻辑由j a v a b e a n 完成,a c t i o n 类侧重于控制应用 程序的流程,而不是应用程序的逻辑。而通过将业务逻辑放在j a v a 类文件中,提高了应用程序的灵活 性和可重用性。 s t r u t s 的配置文件s t r u t s - c o n f i g x m l 用户的请求是通过a c t i o n s c r v l e t 来处理和转发的,但a c t i o n s e r v l e t 如何决定把用户的请求转发给 哪些a c t i o n 对象还需要一些描述用户请求路径和a c t i o n 映射关系的配置信息。在s t r u t s 中这些存储信 息在特定的x m l 文件s t r u t s - c o n f i g x m l 中。在该配置文件中,每一个a c t i o n 的映射信息都通过一个 元素来配置1 4 1 。这些配置信息在系统启动时被读入内存,供s t r u t s 运行期问使用。在内存中, 每- - 个 元素都对应一个o r g a p a c h e s t r u t s a c t i o n a c t i o n m a p p i n g 类的实例。m v c 的设计模型如图 2 2 所示: 2 1 3s t r u t s 的工作流程 图2 - 2 m v c 设计模型 对于采用s t r u t s 框架的w e b 应用,在w e b 应用启动时就会加载并初始化a c t i o n s e r v l e t ,a c t i o n s e r v l e t 从s t r u t s - c o n f i g x m l 文件中读取配置信息,把它们存放到各种配置对象中,如a c t i o n 的映射信息存放到 a c t i o n m a p p i n g 对象中。当a c t i o n s e r v l e t 接收到一个客户请求时将执行如下的流程。 检索和用户请求匹配的a c t i o n m a p p i n g 实例,如果不存在,就返回用户请求路径无效的信息。 o 如果a c t i o n f o r m 实例不存在,就创建一个a c t i o n f o r m 对象,把客户提交的表单数据保存到 a c t i o n f o r m 对象中。 q 根据配置信息决定是否需要表单验证,如果需要验证,就调用a c t i o n f o r m 的v a l i d a t e o 方法。 如果a c t i o n f o r m 的v a l i d a t e 0 方法返回n u l l 或返回一个不包含a c t i o n m c s s a g e 的a c t i o n e r r o r s 对 4 第一二章轻量级框架的分析及概述 象,就表示表单验证成功。 oa c t i o n s e r v l e t 根据a c t i o n l v l a p p i n g 实例包含的映射信息决定将请求转发给那个a c t i o n 。如果相 应的a c t i o n 实例不存在,就先创建这个实例,然后调用a c t i o n 的e x e c u t e ( ) 方法。 a c t i o n 的e x e c u t e ( ) 方法返回个a c t i o n f o r w a r d 对象,a c t i o n s e r v l e t 再把客户请求转发给 a c t i o n f o r w a r d 对象所指向的j s p 组件。 a c t i o n f o r w a r d 对象指向的j s p 组件生成动态网页,返回给客户。 s t r u t s 相应用户请求的工作流程如图2 3 所示: , a c t i o n s e r v l e t 、厂a c t i o n、厂b u s i n e s sl o g i c 、 r o - 瞳t 岫 厶 r 弋= 罗 n o tf o u n d f o u n d 上 c r 眦a c t i o “f o r m盯e n o n l 人 。 y酷 妇柏 l y c n 蚺 o t i o a 哪 p e d o c mr 自蛳捌 b u 蝌n e i o i 吐c l p r o 赫r 0 h i m 甜o n f o r w 、_ 口da 商o l f a r _ - r d l n o r mr 中咖t 图2 3s t r u t s 相应用户请求的工作流程 s t r u t s 框架的各个组件如图2 _ 4 : 组件角色 a c t i o n s c r v l c t控制器 a c t i o n c l a s s 包含事物逻辑 a c t i o n 】硫 显示模块数据 a c t i o n m a p p i n g帮助控制器将请求映射到操作 a c t i o n f o r w a r d用来指示操作转移的对象 a c t i o n e r r o r 用来存储和回收错误 s t r u t s 标记库减轻界面开发工作 图2 4s t r u t s 框架的各个组件 5 东南人学硕i :学位论文 2 1 4s t r u t s 的优点 s t r u t s 的优点主要体现在m v c 模式的优点上,其优点主要如下: 多个视图可以对应一个模型。按m v c 设计模式,一个模型对应多个视图,可以减少代码的复 制和代码的维护量,一旦模型发生改变,也易于维护。 模型返回的数据与显示逻辑分离。模型数据可以应用任何显示技术,例如可以使用j s p 页面、 v e l o c i t y 模板或者直接产生e x c e l 文档等。 0 应用被分为三层,降低了各层之间的耦合,提供了应用的可扩展性。 控制层概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成了不同的请求。因 此,控制层可以说包含了用户权限请求的概念。 om v c 更符合软件工程化管理的精神。不同的层各司其职,每一层组件具有相同的特征有利 于通过工程化和工具化产生管理程序代码。 2 2 业务逻辑层s p r i n g 框架概述及分析 2 2 1s p r i n g 概述 s p r i n g 是一个开源框架p j ,由r o d j o h n s o n 创建,他在e x p e r to n e - o n - o n e :j 2 e ed e s i g na n d d e v e l o p m e n t 这本书中阐述过这个框架。s p r i n g 是为了简化企业级系统开发而诞生的。使用s p r i n g 就可 以用简单的j a v a b e a n s 来实现那些只有e j b 才能实现的功能。不只是服务器端开发从中受益,任何j a v a 系统开发都能从s 研n g 的简单可测试和松耦合特征中得到好处。 s p r i n g 是一个轻量级的i o c 和a o p 容器框架,它的几个重要特点如下: 轻量级:从大小和系统开支上s p r i n g 都应该算是轻量级的,整个s 研n g 框架可以压缩成成一个 1 m b 左右的j a r 包,并且s p r i n g 的开支也非常的小。更重要的是s p r i n g 是非入侵式的;基于s p r m g 开发的系统中的对象一般不依赖于s p r i n g 的类。 反转控制:s p r i n g 提倡使用反向控, l j 0 0 c ) 来实现松耦合。使用i o c ,对象是被动接收依赖类而 不是自己主动去找。i o c 可以理解为j n d i 的反转,对象不是从容器中查找它的依赖类而是容器在实例 化对象的时候主动将它的依赖类注入其中。 o 面向切面:s p r i n g 对面向切面编程提供了强大的支持,通过将业务逻辑从系统服务( 如监控和事 务管理) 中分离出来,实现了内聚开发。系统对象只做它们该做的业务逻辑,而不负责其他系统问题( 例 如日志和事务支持) 。 容器:s p r i n g 是一个容器,是因为它包含并且管理系统对象的生命周期和配置。研究人员可以 通过配置来设定b c a n 的单一实例,还可以每次请求产生一个实例,并且设定它们之间的关联关系。s p r i n g 有别于传统的重量级e j b 容器,这些容器通常很大。 0 框架:s p r i n g 实现了使用简单的组件配置组合成个复杂的系统。在s p r i n g 中,系统对象是通 过x m l 文件配置组合起来的( 本系统为a p p l i c a t i o n c o n t e x t 舳1 ) ,并且s p r i n g 提供了很多基础功能( 事务 管理、持久层集成等) ,这些能够让开发人员更专注于开发应用逻辑。 2 2 2s p r i n g 框架结构 s p r i n g 的框架结构图如图2 5 所示: 6 第二章轻量级框架的分析及概述 图2 - 5s p r i n g 的框架结构图 核心容器( s p r i n gc o r e ) 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 r i n g 框架系统的核心。b e a n f a c t o r y 采用工厂模式来实现1 0 1 2 ,它将系统的配置和依赖关系从 代码中独立出来。 s p r m 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 的a o p 模块【6 1 在a o p 模块中,s p r i n g 对面向切面提供了丰富的支持。这个模块是为s p r i n g 应用系统开发切面的 基础。 j d b c 抽象及d a o 模块 编写j d b c 代码时总要写一些模板类的代码,例如:获得链接,创建语句,处理结果,最后关闭链 接。s p r i n g 的j d b c 和d a o 模板把这些模板样式的代码抽象出来,让数据库的代码变得简单明了,也 可以避免因为释放数据库资源失败而引起的问题。这个模块还建立了一个容易理解的数据库异常层,它 建立在各种数据库错误信息之上。另外这个模块利用s p r i n g 的a o p 模块为s p r i n g 系统中的对象提供事 务管理服务。 o r 映射集成模块 s p r i n g 提供了o r m 模块。s p r i n g 为许多流行的o r m 框架做了钩子程序1 7 】,包括h i b e r n a t e 、j d o 和i b a t i ss q l 映射。s p r i n g 的食物管理支持所有这些o r m 框架以及j d b c 。 s p r i n g 的w e b 模块 w e b 上下文模块建立在应用上下文模块的基础之上,提供了适合w e b 系统的上下文。另外,该模 块还支持多项其他面向w e b 的任务,如透明处理多文件上传请求,自动将请求参数绑定到业务对象中 等。这个模块还包括对j a k a r t as t r u t s 的集成支持。 2 2 3s p r i n g 的依赖注入( 反转控制) 依赖注入( d 印锄d 肌c ) ri n j e c t i o n ) 是目前优秀的解耦方式。使用依赖注入时。j 2 e e 应用中的各种组件 不需要以硬编码的方式耦合在一起,甚至无需使用工厂模式,当某个j a v a 实例需要其他j a v a 实例时, 系统会自动提供需要的实例,无需程序显示获取。依赖注入是s p r i n g 的核心机制,可以使s p r m g 的b e a n 以配置文件组织在一起【8 】,而不是以硬编码的方式耦合在一起。 依赖注入即当某个j a v a 实例( 调用者) 需要另一个j a v a 实例( 被调用者) 时,在传统的程序设计过程中, 7 东南人学硕i ? 学位论文 通常由调用者来创建被调用者的实例,而在依赖注入的模式下,创建被调用者的工作不再由调用者来完 成,通常由s p r i n g 的容器来完成,然后注入调用者,因此成为依赖注入也成为控制反转。 依赖注入通常有两种,设值注入和构造注入,本系统大多采用设值注入。 设值注入 代码2 1 航次接口 航次接口定义了航次的规范,接口规范要求实现了接口的类必须实现接口的方法。代码2 - 2 的类是 实现了航次接口的标准航次类。 代码2 - 2 标准航次类 标准航次类组合了接口航次港接口,它实现了g 默和s e t 方法。航次港接口如代码2 - 3 所示: p u b l i ci n t e r f a c ev o y a g e s p o r t p u b l i ci n t e g e r g e t n u m p o r t o f v o y a g e s ( s t r i n gv o y a g e s c o d e ,s t r i n gs h i p c o d e ) ; p u b l i cs t r i n gg e t v o y a g e s p o r t n a m e ( s t r i n gv o y a g e s c o d e ,s t r i n gs h i p c o d e ) ; 代码2 - 3 航次港接1 2 1 代码 v o y a g e s p o r t ( 航次港接口) 的一个实现类如代码2 _ 4 所示。 8 第二章轻量级框架的分析及概述 代码2 4 标准航次港实现类 下面是s p m g 的配置文件,将航次类和航次港类组合到一起。代码2 - 5 为s p r i n g 配置文件 代码2 - 5 标准航次类j a v a b e a n 在s p r i n g 中的配置文件 从配置文件中可以看到s p r i n g 管理b e a n 的灵活性。b e a n 与b e a n 之间的依赖关系被放在了配置文 件里组织,而不是写在代码里。通过配置文件的制定,s p r i n g 能精确地为每个b e a n 注入属性。配置文 件里的b e a n 的c l a s s 元素不能是接口,而必须是实现类。 当主程序调用了s t a n d a r d v o y a g e s 类的g e t v o y a g e s l i n e n a m e 方法的时候,并且该方法需要使用实现 了v o y a g e s p o r t 接e l 的类的实例的时候,程序没有在任何特定的地方将特定s t a n d a r d v o y a g e s 实例与 s t a n d a r d v o y a g e s p o r t 实例耦合在一起,或者说,程序里没有为s t a n d a r d v o y a g e s 传入s t a n d a r d v o y a g e s p o r t 实例,而s t a n d a r d v o y a g e s p o r t 实例由s p r i n g 在运行期间动态注入。如果需要改写s t a n d a r d v o y a g e s p o r t 的实现类,或者需要提供另一个实现类给s t a n d a r d v o y a g e s 实例使用的时候,接口与s t a n d a r d v o y a g e s 类 都不需要改变,只需要提供v o y a g e s p o r t 接口的另一个实现类,然后对配置文件进行简单的修改即可。 构造注入 构造注入,指通过构造函数来完成依赖关系的设定,而不是通过s e t t e r 方法,对前面代码 s t a n d a r d v o y a g e s 做简单的修改即可完成构造注入,修改后代码如2 - 6 所示。 代码2 石实现了构造注入的标准航次代码 9 东南大学硕l :学位论文 此时无需s t a n d a r d v o y a g e s 类里实现v o y a g e s p o r t 的s e t 方法,在构造s t a n d a r d v o y a g e s 实例注入所需 要的v o y a g e s p o r t 实例。 构造注入的配置文件也需要简单的修改,修改后的配置文件如代码2 - 7 所示。实现了构造注入的 s p r i n g 配置文件。 代码2 - 7 实现了构造注入的s p r i n g 配置文件 构造注入的执行效果与设值注入的执行效果完全相同。区别在于创建s t a n d a r d v o y a g e s 实例中的 s t a n d a r d v o y a g e s p o r t 属性的时机不同,设置注入是先创建一个默认的b e a n 实例然后调用s c ! t t c i 方法注 入依赖关系;而构造注入则是在创建b e a n 实例时,已经完成了依赖关系的注入。 2 2 4a o p 和s p r i n ga o p 大多数a o p 都是关于如何使交叉业务模块化,下面图2 - 6 描述了系统的交叉业务。 图2 - 6s p r i n ga o p 交叉业务 图2 - 6 描述了一个典型的分成多模块的应用系统。每个模块的主要业务是为它的特殊领域提供服 务。然而,每个模块也需要一些相似的辅助功能,如安全和事务管理。重用通用功能的常用面向对象技 术是使用继承和委托模式。但由于基础类在系统中到处使用,使用继承会引起脆弱的继承关系。委托模 式比较笨拙,依然需要重复调用委托对象。多数情况下a o p 是一种更简洁的替代方法【9 1 。使用a o p , 可以在一个地方定义通用功能,只是可以声明式的定义何时何地应用这些功能,而不用在需要新功能的 地方修改代码。交叉业务现在可以被模块化到特定的对象切面中。这样做有两个好处。第一,现在每个 业务逻辑放在一个地方,而不是分散到代码的各个角落;第二,服务模块更加清晰,因为他们只实现了 核心功能,辅助功能转移到切面中。 2 2 5b e a n 和b c a n f a c t o r y b e a n 是s p r m g 管理的基本单位,在s p r i n g 的j 2 e e 应用中,所有的组件都是b e a n ,包括数据源、 h i b e r n a t e 的s e s s i o n f a c t o r y 及事务管理等。s p r i n g 里的b e a n 是非常广义的概念,任何j a v a 对象,j a v a 1 0 第二章轻量级框架的分析及概述 组件都可以被当成b e a n 处理。甚至这些组件并不是标准的j a v a b e a n 。 整个应用中各层对象都处于s p r i n g 管理之下,这些对象以b e a n 的方式存在。s p r i n g 负责创建b e a n 实例,并管理其生命周期。b e a n 在s p r i n g 容器中运行时,无须知道s p r i n g 容器的存在也一样可以接受 s p r i n g 的依赖注入,包括b e a n 属性的注入、合作者的注入及依赖的注入等。 s p r i n g 的容器有两个接口:b e a n f a c t o r y 和a p p l i c a t i o n c o n t e x t i 儿 ,这两个接口的实例被称为s p r i n g 上下文,它们都是产生b e a n 的工厂,b e a n 是s p r i n g 工厂产生的实例。s p r i n g 产生b e a n 实例时,需要知 道每个b e a n 的实现类,而b e a n 实例的使用者面向接1 3 ,无须关心b e a n 实例的实现类。因为s p r i n g 工 厂负责维护b e a n 实例的实例化,所以使用者无须关心实例化。 b e a n 定义通常使用x m l 配置文件。正确定义的b e a n 由s p r i n g 提供实例化以及依赖关系的注入 b e a n 实例通过b e a n f a c t o r y 访问。对于本系统b e a n 通过a p p l i c a t i o n c o n t e x t 提供访问,因为 a p p l i c a t i o n c o n t e x t 是b e a n f a c t o r y 的子接口,提供比b e a n f a c t o r y 更多的功能。 2 3 数据持久层h i b e r n a t e 框架的概述及分析 h i b e r n a t e 是一个面向j a v a 环境的对象关系数据库映射工具f l l 】,这种映射技术可以把对象模型表示 的对象映射到基于s q l 的关系模型结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工现场文明施工管理方案
- 夫妻离婚股权分割与公司经营权转让综合协议
- 离婚协议书起草与财产分配协议
- 离婚协议及子女抚养权、财产分配、债务处理详细约定
- 羊草产业化发展的优势与必要性探讨
- 文化创意产业园租金支付与产业发展合作合同
- 离婚协议签署效力认定与反悔可能性风险评估合同
- 离婚协议中财产评估及分割的规范操作流程
- 山地租赁合同范本(山地林业资源开发与保护)
- 电信服务合同签订与用户隐私保护规定
- Unit 2 Home Sweet Home Section A Grammar Focus 3a-3c课件 人教版(2024)八年级上册
- 法律援助法普法活动方案
- 食管恶性肿瘤护理查房
- 发热病人的护理课件
- 智能装备产业行动计划
- 新生儿湿疹护理与防治要点
- 高效农贸市场管理与运营合作协议
- 诸暨市家政服务员(母婴护理员)职业技能大赛技术文件
- CJ/T 81-2015机械搅拌澄清池搅拌机
- T/SHPTA 082-2024光伏组件封装用共挤EPE胶膜
- 企业合规经营及纳税证明书(5篇)
评论
0/150
提交评论