




已阅读5页,还剩61页未读, 继续免费阅读
(计算机应用技术专业论文)j2ee轻量级容器的研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 软件系统中的非功能性需求模块的实现与功能性需求模块的实现混杂在一 起,在设计阶段会干扰设计师的设计思路,在软件开发阶段使程序员的代码混 乱,在软件维护阶段导致项目难于维护。而一个成熟的系统框架可以减少重复 开发的工作量、缩短开发时间、降低开发成本,增强程序的可维护性和可扩展 性。因此,构建一个成熟的软件开发框架一直是软件开发者关注的课题。 本文在分析软件系统中常见的非功能性需求后,运用s p r i n g 框架和面向方 面编程思想构建了一个较为成熟的w e b 框架。对具有共性的系统非功能性需 求,如数据持久化、事务管理、权限管理等,给出了解决策略与具体的解决方 案。最后,从系统架构的角度出发,结合原m y e c 电子商务系统的不足,提出 了一个改进后可以符合企业级系统需求的系统架构。 本文研究的主要内容包括以下几个方面: ( 1 ) 研究了轻量级容器提供的服务与特征,同时分析了轻量级容器和e j b 容器的优点。 ( 2 ) 阐述了s p r i n g 的整体框架结构和选择s p r i n g 作为轻量级容器的原因。 深入研究了s p r i n g 框架中i o c ( i n v e r s i o no fc o n t r 0 1 ) 和a o p ( a s p e c to r i e n t e d p r o g r a m m i n g ) 的实现总线和应用策略。 ( 3 ) 系统中的非功能性需求实质上就是具有共性的系统级横切关注点。重 点探讨了运用面向方面编程( a o p ) 结合控制反转( i o c ) 框架将软件系统中常见的 横切关注点模块化,以达到逻辑过程中各部分之间低耦合的隔离效果。详细的 给出了数据持久化、事务管理、权限管理、远程调用这四个方面的解决方案。 ( 4 ) 从w e b 层、中间层、业务层、持久层四个层次出发,分析原m y e c 系统可能遇到的问题。同时针对上述不足给出了具体的解决方案。 ( 5 ) 从设计模式的角度出发,阐述了重构后系统框架的优势所在,定性的 证明了改进后系统架构的先进性。 关键词:面向方面编程,控制反转,非功能性需求,轻量级容器 a b s t r a c t t h er e a l i z a t i o no f n o n f u n c t i o n a lr e q u i r e m e n t s m i x e sw i t ht h es y s t e m f u n c t i o n a l i t yr e q u i r e m e n t s ,w h i c hw i l li n t e r f e r ew i t ht h ed e s i g no fd e s l g n e f s 1 nt h e d e s i g ns t a g ea n dc o n f u s et h e c o d e so fc o d e r si nd e v e l o p m e n tp h a s ea n dm a k e m a i n t a i n i n gd i f f i c u l ti nm a i n t e n a n c ep h a s e a n da m a t u r es y s t e mf r a m e w o r kc o u l d r e d u c et h ew o r k ,l i m i tt h et i m e o fd e v e l o p m e n t ,! o w e r c o s t sa n de n h a n c et h e m a i n t a i n a b i l i t ya n dt h es c a l a b i l i t y s os o f t w a r ed e v e l o p m e n tf r a m e w o r k i so n eo ft h e s o f t w a r ee n g i n e e r i n gd e s i g np r i n c i p l e 触e ra n a l y z i n gt h ec o m m o nn o n f u n c t i o n a lr e q u i r e m e n t s i nt h es o f t w a r e s v s t e mi nt h i sd i s s e r t a t i o n ,w ec o n s t r u c ta m o r em a t u r ew e bf r a m e w o r kw i t hs p r i n g f r a m e w o r ka n da s p e c to r i e n t e dp r o g r a m m i n g t h es t r a t e g i e sa n d c o n c r e t es o l u t i o n s a r e 西v e nt 0m e e tt h ec o m m o n n o n f u n c t i o n a lr e q u i r e m e n t si nt h es y s t e m , s u c ha s d a t ap e r s i s t e n c c ,t r a n s a c t i o nm a n a g e m e n t ,r i g h tm a n a g e m e n ta n d o t h e r s 王1 n a u y , f r o mt h es v s t e ma r c h i t e c t u r ep o i n to fv i e w ,i tp r o m o t e ss y s t e ma r c h l t e c t u r e t om e e t t h en e e d so fe n t e r p r i s e 1 e v e la f t e ri m p r o v e d ,c o m b i n i n gt h ed i s a d v a n t a g e s o ft h e f o r m e rm y e ce c o m m e r c es y s t e m t h i sd i s s e r t a t i o ni n c l u d e sf o l l o w i n gs e v e r a lp a r t s : ( 1 ) t h ed i s s e n a t i o nh a ss t u d i e dt h es e r v i c e sa n dt h ec h a r a c t e r i s t i co f t h e l i g h t w e i 曲tc o n t a i n e r ,a n da n a l y z e de a c ha d v a n t a g e o ft h el i g h t w e i 曲c o n 伽n e ra 1 1 d t h ee j bc o n t a i n e r ( 2 ) t h ed i s s e r t a t i o nh a ss t u d i e dt h es t r u c t u r eo f t h ef r a m e w o r ka n dt h er e a s o n s f o rs e l e c t i n gs p r i n ga s al i g h t w e i g h tc o n t a i n e r - a tt h es a m e t i m e s t u d y ,t h e i m p l e m e n t a t i o na n da p p l i c a t i o ns t r a t e g yo f i n v e r s i o no fc o n t r o la n da s p e c to n e n t e d p r o g r a m m i n g i ns p r i n gf r a m e w o r k ( 3 ) t h ee s s e n c eo f t h en o n - f u n c t i o n a lr e q u i r e m e n t s i st h ec o m m o n s v s t e m 1 e v e lc r o s s c u t t i n gc o n c e r n t h ed i s s e r t a t i o nh a s m o d u l a r i z e dt h ec o m m o n c r o s s c u t t i n gc o n c e m si n s o f t w a r es y s t e mi na s p e c to r i e n t e dp r o g r a m m i n ga n d i n v e r s i o no fc o n t r o li ns p r i n gf r a m e w o r k ,i n o r d e rt oa c h i e v et h es e p a r a t i o ne f f e c t s i nl o g i c a lp r o c e s sa m o n ga l lp a r t s g i v et h es o l u t i o n so ft h ef o u ra s p e c t s ,s u c h a s n d a t ap e r s i s t e n c e ,t r a n s a c t i o nm a n a g e m e n t ,f i g h t sm a n a g e m e n ta n dr e m o t ec a l l i n g d e t a i l e d l y ( 4 ) f r o mt h ew e bl a y e r 、i n t e r m e d i a t el a y e r 、b u s i n e s sl a y e ra n dl a s t i n gl a y e r , t h ed i s s e r t a t i o na n a l y z e st h ep r o b l e m sw h i c ht h ef o r m e rm y e ce - c o m m e r c es y s t e m m a ym e e t ,a n dg i v e st h ec o n c r e t es o l u t i o n s ( 5 ) f r o mt h ev i e wo fd e s i g np a t t e r n s t h ed i s s e r t a t i o nd e s c r i b e st h ea d v a n t a g e s o ft h en e ws y s t e mf r a m e w o r k ,a n dp r o v e ss u c ha d v a n t a g e sq u a l i t a t i v e l y k e y w o r d s :a s p e c to r i e n t e dp r o g r a m m i n g ,i n v e r s i o no fc o n t r o l ,t h en o n f u n c t i o n a l r e q u i r e m e n t s ,t h el i 。g h t w e i g h tc o n t a i n e r i i i 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得武汉理工大学或其它教育 机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 尘 盟4 牛 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即学校有权 保留、送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部 或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 签名:二乳导师签名:雏同期: 武汉理工大学硕十学位论文 1 1 课题研究背景 第1 章绪论 j 2 e e 是当今可用于企业软件开发的最佳平台之一。在传统的j 2 e e 应用中, e j b ( e n t e r p r i s ej a v a b e a n ) - - 直作为j 2 e e 的核心存在。e j b 组件负责接受、处理 w e b 容器的客户请求和连接,提供整个企业使用的数据。 j 2 e e 经典架构的缺点是系统开销很大【,一些负载来源于e j b ,此外还与 分布式架构的特性有关。为了分布化,也牺牲了部分o o 原则,由于业务逻辑 通常编写在e j b 的实现类中,而这些e j b 的实现类又完全依赖于e j b ,所以e j b 也难以测试。而且,e j b ( e n t e r p r i s ej a v a b e a n s ) 组件模型过于复杂,没有达到降 低实现业务逻辑和数据持久化时开发复杂性的目标。并且e j b 功能的不可分隔 性导致e j b 提供的各种强大功能不能各自独立使用。 为了解决经典架构中的系统问题,j 2 e e 逐步流行起了非e j b 架构的“轻 量级容器”。轻量级容器与e j b 架构都是由容器管理业务对象,然后再组织整个 架构。但是业务对象不是运行在e j b 容器中,而是运行在“轻量级容器”中。 轻量级容器提供了一种管理、定位业务对象的方法【2 1 。不必强制使用j n d i 寻址、定制服务之类的额外辅助;轻量级容器为应用对象提供注册服务。较之 e j b 容器而言,它不仅功能强大,而且避免了容器中强制业务对象采用特定的 接口,最低程度地侵入性,实现了效果极佳的架构重用。 s p r i n g 框架以其优美的架构和成熟的外设成为轻量级框架中最出色的代表 1 3 j ,它采用p o j o p o j i ( p l a i no r d i n a r yj a v ao b j e c t p l a i no r d i n a r yj a v ai n t e r f a c e ) “照 单点菜”式的提供诸如事务处理、持久性、安全性等服务。这种机制的实现建立 在其微核心i o c 容器的基础之上,同时各种服务以a o p 方式提供。虽然s p r i n g 的许多部分可以在各种类型的j a v a 环境下使用,但从根本上说,它仍然是一 个j 2 e e 应用框架。大多数情况下,s p r i n g 管理的应用对象不需要直接使用j 2 e e 的a p i ,也不需要编写繁琐的j n d i 查询代码,并且允许代码不受j 2 e e 环境的 束缚,从而提高了重用性。如果需要j 2 e e 服务,而且需求不是太复杂的情况下 也可以选择轻量级的解决方案。s p r i n g 的主要目标就是让j 2 e e 更易用、同时促 武汉理t 大学硕士学位论文 进好的编程习惯。 1 2 国内外研究现状 重量级和轻量级最本质的区别在于框架的灵活性。重量级容器以接口为驱 动的模式,使得业务对象需要实现很多预先定义的框架接口,导致过份依赖容 器。轻量级容器则利用l o c ( i n v e r s i o no fc o n t r 0 1 ) ,由容器提供资源或者其他业务 对象并p u s h 给当前对象。i o c 是轻量级容器的精髓所在,它主要强调依赖注入 和面向方面编程。 目前比较知名的轻量级i o c 容器有如下: ( 1 ) p i c o c o n t a i n e r 是一个“微核心”( m i c r o k e r n e l ) 的容器l 引。它利用了 i n v e r s i o no fc o n t r o l 模式和t e m p l a t em e t h o d 模式,提供面向组件的开发、运行 环境。p i c o c o n t a i n e r 是“极小”的容器,只提供了最基本的特性。 ( 2 ) a v a l o n 5 j 是a p a c h e 的一个包括核心框架、工具、组件和容器的面向 组件编程( c o p ) 的完整开发平台。通过使用关键设计模式,如反向控制模式 ( i o c ) 和分离考虑模( s o c ) ,a v a l o n 提供各种基本组件和缺省的应用程序模 块,用于构造应用程序解决方案 ( 3 ) h i v e m i n d l 6 1 是一个a p a c h e 的子项目微核心i o c 框架。在h i v e m i n d 里,一个服务是一个j a v a 接口的实现。与其他的面向服务的架构体系( s e r v i c e o r i e n t e da r c h i t e c t u r e s ) 不一样的是,h i v e m i n d 的只能使用单个虚拟机来组织j a v a 代码。 ( 4 ) g u i c e l 7 j 是一个轻量级,基于j a v a 5 ( 主要运用泛型与注释特性) 的依 赖注入框架( i o c ) 。g u i c e 非常小而且快。g u i c e 是类型安全的,它能够对构造 函数,属性,方法( 包含任意个参数的任意方法,而不仅仅是s e t t e r 方法) 进 行注入。g u i c e 还具有一些可选的特性比如:自定义s c o p e s ,传递依赖,静态属 性注入,与s p r i n g 集成和a o p 联盟方法注入等。 ( 5 ) s p r i n 9 1 8 j 框架首次在2 0 0 3 年6 月的a p a c h e2 0 的使用许可中发布。它 提供了依赖注入机制,其它包建立在此微内核之上,通过i o c ( 控制反转) 机制灵 活的装卸,整个s p r i n g 框架以i o c 为基础,a o p 贯穿始终。 s p r i n g 的轻量级解决方案使j 2 e e 标准技术更容易使用。它提供的解决方案 具有非侵入性、易于测试、统一配置和可扩展性,使其变成一个流行的开源应 2 武汉理上大学硕士学位论文 用框架,用户社群逐渐壮大。【9 】s p r i n g 框架己趋于行业标准。其中s p r i n 9 1 2 6 获得16 届j o l t 大奖的l i b r a r i e s f r a m e w o r k sa n d c o m p o n e n t s 组的p r o d u c t i v i t y w i n n e r s 奖,可见s p r i n g 已经得到业界的认可。s p r i n g 有一个兴旺蓬勃的开发 者和用户社群,并且同益变得强大而可靠。因此s p r i n g 的未来是光明的,在企 业应用中w i t h o u te j b 是大势所趋。 1 3 本文所做的工作 本文介绍了s p r i n g 框架及其两大中心机制i o c 和a o p ,提出以s p r i n g 框架 为核心的构建j 2 e e 企业应用开发框架。即s t r u t s 架构表示层, s p r i n g 来架构 业务层,用i b a t i s 架构持久层,充分发挥每个组件的优势,并把这些框架无缝 地整合起来,形成一个良好的开发框架。 同时,本框架运用面向方面与面向对象相结合的编程思想,解决了软件开 发中非功能性需求与系统需求耦合的问题。将系统中,如安全性、可移植性、 分布式、实时等,非功能性需求作为横切关注点与业务逻辑分离并独立实现。 之后,本文对基于面向方面与面向对象相结合的框架与传统只基于面向对 象编程思想的框架进行比较。证明了改进后的系统框架是符合企业级应用软件 系统需求的,可以减少重复开发工作量、缩短开发时间、降低开发成本,增强 程序的可维护型和可扩展性。 1 4 论文组织结构 第一章:在对轻量级容器的研究现状做了概括和分析之后从总体上明确了 本文研究的具体目标和任务。 第二章:对轻量级容器多层次结构做了概括和分析,同时比较了轻量级容 器与e j b 容器各自的优点。 第三章:介绍了设计本系统时用到的s p r i n g 框架,介绍了i o c ( 1 n v e r s i o no f c o n t r 0 1 ) ,a o p ( a s p e c to r i e n t e dp r o g r a m m i n g ) 的设计思想。 第四章:运用a o p 实现系统中非功能性需求,将数据持久化、事务管理、 权限管理、远程调用,这四种非功能性需求模块作为横切关注点独立实现。 第五章:结合原有的m y e c 电子商务系统,首先阐述原系统架构需要改进 3 武汉理:r 大学硕士学位论文 的必要性,然后结合第四章提出改进的方法,最后将改进后的框架与原有框架 进行比较,证明了改进后的框架系统在性能上的优势。 第六章:对本文进行简要总结,对系统改进和完善提出自己的意见。 1 5 本章小结 本章主要讨论课题的研究背景及其意义,介绍轻量级容器的研究现状。在 本章的最后,阐述了本课题所要做的研究工作,论文的组织结构。本章从总体 上明确了研究的具体目标和任务。 4 武汉理一t :人学硕士学位论文 第2 章轻量级容器的介绍 2 1j 2 e e 系统结构 2 1 1j 2 e e 技术简介 j 2 e e 平台己经成为使用最广泛的w e b 应用程序设计技术,主要支持两类 软件的开发和应用做高级信息系统的w e b 应用服务器, w e b 应用服务器上运行 的w e b 应用程序i lo 。j 2 e e 平台为丌发多层次分稚式、针对服务器的应用系统 提供了统一的技术平台。 j 2 e e 体系结构扩展了标准的两层结构,提供中间层来满足经济、高可用性、 高可靠性、可扩展性的需求。这种结构下1 1 1 】,主要程序都运行在能保证正常运 行的服务器端,简化了客户端,使系统更加安全可靠,也更容易扩充和移植。 2 1 2j 2 e e 四层模型 一个典型的多层j 2 e e 应用结构包括以下四个层次:客户层、w e b 应用层、 业务层和企业信息系统) = 丢( e n t e r p r i s ei n f o r m a t i o ns y s t e m 简称e i s ) 【1 2 】, ( 1 ) 客户层组件:客户层是用户的使用界面。j 2 e e 客户端既可以是w e b 客户端,也可以是应用程序客户端。 ( 2 ) w e b 应用层组件:可以是j s p 页面或者s e r v l e 。w e b 层处理用户输入, 并把输入发送到运行在业务层上的e j b 处理。 ( 3 ) 业务层组件:业务层满足业务需求,由运行在业务层上的e j b 处理。 ( 4 ) 企业信息系统层:企业信息系统层处理企业信息系统软件,包括企业 基础建设系统、企业资源计划( e n t e r p r i s er e s o u r c e sp l a n n i n g ,简称e r p ) 【1 3 】大型 机事务处理、数据库系统和其它的遗留信息系统。 5 武汉理。r 人学硕士学位论文 2 2 轻量级容器的概念 2 2 1 容器提供的服务 容器是指应用代码的运行框架。任何容器都应该包含如下服务f 1 4 】: ( 1 ) 生命周期管理:容器负责创造构件,同时提供诸多回调机制。 ( 2 ) 查找服务:容器必须有一种途径来获得受控构件的引用,以使构件可 以互操作。即容器的核心就是一个工厂。 ( 3 ) 配置管理:容器应该尽可能的将简单的易变换的配置值从代码中提取 出来,为构件提供统一的方法来配置,这样在改变配置时就不需要重新编译代 码,也无须 a v a 开发人员的帮助。 ( 4 ) 依赖解析:管理各个构件之间的关系。 除此上述容器核心模块应该提供的服务,但是容器还必须提供其它一些服 务,增加实用性。比如: ( 1 ) 企业级服务:为构件提供事务管理。 ( 2 ) 线程管理:对于构件的操作,容器需要给出一个线程模型。 ( 3 ) 对象池:提供一个实例池来管理对象。 ( 4 ) 集群服务:容器的提供集群服务在需要支持有状态的构件是必须的, 但是如果是无状态,容器提供集群服务就不是很重要了,因为容器无需为集群 维护状态。 ( 5 ) 管理:容器为其中运行的对象提供管理服务,用户可以通过管理控制 台或者j m x 进行管理。 ( 6 ) 远程服务:提供远程服务和访问远程对象。 ( 7 ) 扩展性:可以为某一类构件提供定制的服务。 j 2 e e 为多层w e b 应用系统提供了容器平台。开发者开发的程序组件在相 应的容器内部署运行。j 2 e e l 4 的容器如表2 1 6 武汉理= 大学硕十学位论文 表2 1j 2 e e l 4 容器 容器名称描述 应用客户端容器负责w e b 应用程序在客户端组件的执行。 特殊的应用客户端容器,负责在w e b 浏览器和 j a v a 插件上运行j a v a a p p l e t 程序。应用客户端 a p p l e t 容器 容器和a p p l e t 容器基本对应w e b 应用。程序 多层结构中的用户接口层。 管理j s p ,j s t l 和s e r v l e t 等w e b 组件的执行, w e b 应用这些组件主要负责程序和w e b 层通信。对应 w e b 应用程序多层结构的表示层。 负责e j b 的运行。主要负责数据处理以及和数 e j b 容器据库或其他j a v a 程序的通信,对应w e b 应用 程序多层结构的业务层和数据访问层。 2 2 2 轻量级容器的特性 一个轻量级容器应该遇有下列特性【1 5 】: ( 1 ) 非侵入性:可以管理业务代码,但是不应该给代码强加入对容器的依 赖。使应用对象可以在容器内、又可以在容器外运行,达到容器无关性。 ( 2 ) 可以快速启动 ( 3 ) 部署简单。 ( 4 ) 最小限度依赖a p i ,以确保可以运行在不同的环境中,轻量级容器应 该是纯j a v a 的,不依赖j 2 e e 。 ( 5 ) 将对象将交给轻量级容器管理时,不管工作工作量还是性能开销都很 小,因此不仅可以在其中管理精粒度的对象,而且也可以管理细粒度的对象。 2 3 轻量级容器与e j b 容器比较 2 3 1 轻量级容器的优点 ( 1 ) 脱离整体容器:e j b 以“全有或全无”的方式提供企业级组件模型i 1 5 1 , 7 武汉理t 人学硕士学位论文 不能仅仅使用其中的一部分功能。对于典型的w e b 应用,如果能在没有e j b 容 器的情况下提供采用轻量级容器实现企业级服务,通常大大简化系统架构。 ( 2 ) 提高代码复用度:e j ba p i 编写的程序只能在e j b 容器里运行,这意 味着在丌发初期就假设了代码要在特定环境下运行。 ( 3 ) 更好的面向对象:e j b 组件通常不是真正的对象,这是由e j b 组件 模型的特性所决定的,比如说:所以的e j b 的粒度都必须相当粗,这给平常的 面向对象设计习惯增加了额外的约束e j b 组件模型不支持继承,仅仅允许e j b 实现类的继承。而对于轻量级容器,由于对象的约束很少,我们通常可以更好 的实践面向对象。 ( 4 ) 提高生产率:在轻量级容器中,应用代码非常类似普通j a v a 代码, 受容器影响极少。由于几乎完全不依赖重量级的a p i ,因为可以在任何一个 j a v ai d e 中方便的编写业务代码,从而大大提升生产率。 ( 5 ) 提高了可测试性:因为在容器以外( 如普通j u n i t 测试中) 就可以完成 测试,所以可测试性也将得到巨大提高。 2 3 2e j b 的优点 ( 1 ) e j b 的强大在于很好的把企业级服务整合在容器模型中,也就是说 e j b 是个一步到位的解决方案:不仅管理业务对象,而且为受管对象提供声明 中间件服务。 ( 2 ) e j b 对分布式应用提供了比较好的支持,同时e j b 的市场相对稳定 ( 3 ) e j b 容器是一个提供j n d i 定位机制实现的工厂( 或者说组件注册表) , 除了提供企业级服务之外,跟轻量级容器大同小异。 2 4 本章小结 本章主要介绍了轻量级容器的基本概念。首先指出j 2 e e 的四层结构,接着 从什么是了容器出发,介绍了轻量级容器的特性,最后将轻量级容器和e j b 容 器进行比较,指出各自的优点。 8 武汉理工大学硕十学位论文 第3 章s p r i n g 框架作为轻量级容器 3 1 选择s p r i n g 的原因 由于s p r i n g 能消除各种各样自定义格式的属性文件的需要,能消除在许多 工程中常见的对s i n g l e t o n 的过多使用,所以s p r i n g 应用中的大多数业务对象都 不需要依赖于s p r i n g 框架。而且s p r i n g 能提供一种e j b 的替换物,用户能选择 用p o j o s 或l o c a le j b s 来实现业务接口,却不会影响调用代码,使e j b 的使用 成为一个实现选择。这种方法适用于许多w e b 应用l l 酬,例如,s p r i n g 能使用 a o p 提供声明性事务管理而不通过e j b 容器,s p r i n g 为数据存取提供了一个一 致的框架,无论是使用的是j d b c 还是0 rm a p p i n g 产品( 如h i b e r n a t e ) 。所以 这里采用s p r i n g 做轻量级容器。 3 2s p r i n g 整体框架 s p r i n g 整体框架由c o r e 包、a o p 包、d a o 包、o r m 包、w e b 包、c o n t e x t 包、w e bm v c 包组成。c o r e 包是整个框架的基础,其它包均建立在此微内核 之上。它提供了依赖注入机制,通过i o c ( 控制反转) 机制灵活的装卸其它包。 a o p 包贯穿于其它包,提供面向切面拦截能力,提供相关服务。s p r i n g 框架的 目标不是取代整个j 2 e e 中间层服务,而是让底层的j 2 e e 容器服务更为简单。 它结合其他的开源项目开发。如:j a k a r t ac o m m o n sl o g g i n g 解决同志输出,d b c p 作为本地数据源,o b j e c t w e bj o t m 用于事务管理等。借助s p r i n g 可以写出极 为伸缩性的程序,例如当只需要对单个数据源进行操作的时候可以采用j d b c 事务策略替代j t a 。其整体框架如图3 1 所示旧 9 武汉理+ i = 人学硕十学位论文 图3 - 1 s p r i n g 整体框架 ( 1 ) c o r e 包:s p r i n g 轻量级i o c 容器能够配置、装配i a v a b e a n 和大多数 普通j a v a 对象,使得开发者不必定制s i n g l e t o n 和自己的配置机制。s p r i n g 提供 了多个“即拿即用”的b e a n 工厂实现 ( 2 ) c o n t e x t 包。它在b e a n 工厂基础上增加了对信皂, ( m e s s a g es o u r c e ) 矛 1 资 源加载的支持,并提供了接入现有系统环境的能力。 ( 3 ) a o p 框架,s p r i n g 的a o p 框架了对a o p 的支持,可以对轻量级容 器管理的任何对象进行方法拦截。在b e a n 工厂中,可以很轻松为j a v a b e a n 提 供代理,从而在运行时将拦截器和其他的a d v i c e 整合进来。s p r i n g 的a o p 框架 主要用途是为p o j o 提供声明性的企业级服务。 ( 4 ) 自动代理:s p r i n g 在a o p 框架之上提供了更高级的抽象,同时也提 供了很多基础性的服务。 ( 5 ) 事务管理:s p r i n g 提供了通用的事务管理基础设施,包括可接插的事 务策略( 例如j t a 、j d b c 等) 和不同的事务边界划分方式。 ( 6 ) d a o 包:s p r i n g 定义了一组通用的数据访问异常类型,在创建通用 的d a o 接口时可以用这些异常类型抛出有意义的异常信息,而不依赖于底层 持久机制。 ( 7 ) j d b c 的支持。s p r i n g 提供了两级j d b c 抽象,使得编写基于j d b c 的d a o 特别简单,s p r i n g 的j d b c 抽象层集成了事务抽象和d a o 的抽象。 ( 8 ) o r m 包:s p r i n g 提供了多种0 瓜映射工具的支持,如h i b e r n a t e 、j d o 1 0 武汉理i :人学硕士学位论文 和i b a t i s ,很好地简化了资源的配置、获取和释放,并且将o r 映射与整个事 务和d a o 抽象集成起来。这些集成包让应用无需定制t h r e a d l o c a l 会话和自己 的事务操作,也用考虑底层究竟采用哪种o 瓜映射工具。 ( 9 ) w e bm v c 包:采用统一的j a v a b e a n 配置方式。使用s p n n gw e b 框 架时,w e b 控制器也可以在i o c 容器中配置、从而不必为“访问业务层服务”额 外编写代码。s p r i n g 还提供了通用的d i s p a t c h e r s e r v l e t 。 ( 1 0 ) 远程调用支持:s p r i n g 为远程服务的访问和创建提供了一个抽象层, 避免了在应用对象中硬编码对服务的查找 3 3 控制反转机制 大多数业务对象和资源之间都存在依赖关系,容器提供对象和资源的查找 能力。如果想使对象和资源不需要依赖容器进行查找,可以通过控制反转0 0 c ) 来实现。 i o c 是指由框架创建控制对象,而不是由应用代码决定。开发人员只需指 出组件需要的组件对象,容器通过查看方法的参数表在运行时提供所需的组件。 i o c 主要实现形式分为依赖查找( 由容器提供回调接口和上下文环境决定组件) 和依赖注入( 组件不做定位查询,只提供普通的j a v a 方法让容器去决定依赖关 系) 。 3 3 1 实现总线 s p r i n g 框架中i o c 容器的全部功能都在o r g s p r i n g f r a m e w o r k b e a n s 包中实 现。i o c 容器实现中有三个核心概念,完成了s p r i n g 框架i o c 容器的核心。如 下表3 2 所示: 表3 - 2i o c 容器的核心概念 类接口名功能 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 n s 属性 b e a n d e f i n i t i o n定义了b e a n 的类结构、实例化的方式 及相互间依赖关系 武汉理工大学硕十学位论文 回国匡鲴 :1 :获得b e a n 对象: 匡国国 2 :取得b e a n 定义 r u 3 :用某种策略刨建实例 l lj 4 :b e a n 实例初始化 l 。l l i ri lt 图3 - 3 组装一个b e a n 实例的时序图 图3 3 为l o c 容器组装一个b e a n 实例的全过程f 1 9 1 。 创建过程分为四个步骤: ( 1 ) 选择b e a n f a c t o r y b e a n f a c t o r y 以工厂模式负责b e a n 的创建,配置和管理众多b e a n 。 b e a n f a c t o r y 使用配置数据反映b e a n 间的依赖关系。例如最常用的 x m l b e a n f a c t o r v 通过x m l 文件来配置b e a n 问依赖关系。 ( 2 ) b e a n d e f i n i t i o n 的获得 由b e a n d e f i n i t i o n r e a d e r 获取b e a n d e f i n i t i o n 。首先,b e a n f a c t o r y 定位配置 文件资源,接着,x m l b e a n d e f i n i t i o n r e a d e r 调用默认x m l 解析器 d e f a u l t x m l b e a n d e f i n i t i o n p a r s e r 解析x m l 配置文件,获得所有b e a n d e f i n i t i o n , 最后通过b e a n d e f i n i t i o n r e g i s t 接口将其注册到b e a n f a c t o r y 中。 ( 3 ) 创建b e a n 实例 a b s t r a c t a u t o w i r e c a p a b l e b e a n f a c t o r y调用简单实例化策略 s i m p l e l n s t a n t i a t i o n s t r a t e g y ,以相同的方式统一动态创建j a v a b e a n 。s p r i n g 的i o c 框架中b e a n 的真正实例化操作是s i m p l e l n s t a n t i a t i o n s t r a t e g y 调用b e a n u t i l s 实现。 1 2 武汉理【:人学硕十学位论文 ( 4 ) b e a n 的初始化 b e a n w r a p p e r 是s p r i n g 框架l o c 容器的核心接e l 。b e a n w r a p p e r 在组装b e a n 后,从缓存中获取b e a n 属性信息( 如果没有缓存,从b e a n 的c l a s s 中获得属性 信息然后加入缓存) 接着b e a n w r a p p e r 获得所有属性信息 j a v a b e a n s p r o p e r t y d e s c r i p t o r ,接下来最关键的一步就是通过 j a v a 1 a n g r e f e c t m e t h o d 反射机制调用获得的m e t h o d 来读写b e a n 属性。 3 3 2i o c 的应用及意义 典型的s p r i n g 框架的i o c 容器中,通过配置文件a p p l i c a t i o n c o n t e x t x m l 描 述组件之间的相互依赖关系。a p p l i c a t i o n c o n t e x t x m l 文件按惯例放在w e b i n f 目录中,这样做使配置文件对于用户是不可见的,避免用户非法修改此文件。 s p r i n g 将负责管理所有b e a n 的配置、关联和生命周期。如下是一个使用s p r i n g 的i o c 容器创建对象的示例: 首先,在配置文件中定义依赖关系。 元素来设置j a v a b e a n 属性值,其中 子元素用于设置基本 类型属性值,或是其他可以用j a v a b e a np r o p e r t y e d i t o r 处理的类型; 子元 素则用于表示与其他对象的依赖关系( 被依赖的对象可能位于同一个容器中,也 可能位于相关的其他容器中) 。这样一来,容器内的对象就可以对依赖关系进行 强类型检查。在默认情况下,所有的b e a n 都是通过s i n g l e t o n 模式创建的:每 个应用上下文中只有一个实例。 当s p r i n g 开始构造上述应用上下文时,b u s i n e s s m a n a g e r 将会自动获得 b u s i n e s s o b j e c t 引用。,这个引用的b u s i n e s s o b j e c t 应该在同一个容器或别的相 关容器中定义。这些对象只需要暴露相应的b e a n 属性或者构造子参数中,而不 需要进行任何特定的查找操作。 然后,根据配置文件,由i o c 容器创建b u s i n e s s m a n a g e r 对象 1 3 武汉理t 人学硕士学位论文 r e s o u r c e = l l e wf i l e s y s t e m r e s o u r c e ( ”b e a n s x m l ”) ; b e a n f a c t o r yb e a n f a c t o r y 。n e wx m l b e a n f a c t o r y 0 ; b u s i n e s s m a n a g e rb m g e r = ( b u s i n e s s m a n a g e r )b e a n f a c t o r y g e t b e a n ( ”b u s i n e s s m a n a g e r ”) ; 只要该资源能够提供i a v a i o 1 n p u t s t r e a m 对象,r e s o u r c e 接口 ( o r g s p r i n g f r a m e w o r k c o r e i o r e s o u r c e ) 可以用于任何资源。这样,容器以通用的 形式创建对象,管理对象的生命周期。 i o c 容器把分散在程序各处的依赖关系独立出来转移到配置文件中,由容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司电商活动策划方案
- 公司职员会议活动方案
- 可摘义齿固位技术-洞察及研究
- 2025年供热通风与空调工程师考试试题及答案
- 2025年法律与生物伦理的考试试题及答案
- 2025年中国类人胶原蛋白行业市场全景分析及前景机遇研判报告
- 2024年度浙江省护师类之主管护师典型题汇编及答案
- 公寓防火安全教育
- 员工入职三级安全培训
- DB43-T 2864-2023 土家族非遗乐器咚咚喹通.用技术要求
- 2023年黑龙江省文化和旅游系统事业单位人员招聘笔试模拟试题及答案解析
- 2023年江西新余市数字产业投资发展有限公司招聘笔试题库含答案解析
- LY/T 3323-2022草原生态修复技术规程
- 部编版六年级语文下册课件第1课《北京的春节》《腊八粥》
- 涂装工模拟练习题含答案
- 2023-2024学年河南省永城市小学数学二年级下册期末评估测试题
- 乳腺疾病的超声诊断 (超声科)
- 服务精神:马里奥特之路
- 《建筑施工安全检查标准》JGJ59-2011图解
- 华为大学人才培养与发展实践
- 医疗垃圾废物处理课件
评论
0/150
提交评论