基于Spring架构向已有Web软件注入方面

上传人:jiups****uk12 文档编号:40255214 上传时间:2018-05-25 格式:PDF 页数:5 大小:227.77KB
返回 下载 相关 举报
基于Spring架构向已有Web软件注入方面_第1页
第1页 / 共5页
基于Spring架构向已有Web软件注入方面_第2页
第2页 / 共5页
基于Spring架构向已有Web软件注入方面_第3页
第3页 / 共5页
基于Spring架构向已有Web软件注入方面_第4页
第4页 / 共5页
基于Spring架构向已有Web软件注入方面_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于Spring架构向已有Web软件注入方面》由会员分享,可在线阅读,更多相关《基于Spring架构向已有Web软件注入方面(5页珍藏版)》请在金锄头文库上搜索。

1、3 2 6计算机技术与应用进展- 2 0 0 6基于S p n n g 架构向已有W e b 软件注入方面4金兆毅袁兆山合肥工业大学计算机与信息学院2 3 0 0 0 9摘要:随着软件产业的进一步发展,存在很多系统由于缺少某一方面的功能而不得不重写代码。本文针对这种情况,阐述如何通过最小的变动把普通的W e b 软件改为基于S p r i n g 架构的w e b 软件, 并且在s p d n g 架构的基础上通过S p r i n gA O P 把希望的方面功能注入到软件中,并且通过简单的配置来适应以后的需求变更,而不用重新编写代码。关奠词:方面S p r i n gS p r i n g

2、A O P 注入方面1 引言随着软件产业的发展,需求变更是不可避免的,目前存在很多系统由于缺少某一方面的功能,从而不得不重新编码。例如:随着安全性要求的提高,要在现有系统的每一个操作模块加入s e s s i o n 有效期验证功能,这样就要对所涉及的所有模块进行重新编码。但由于很多的模块都要进行修改这无疑带来很大的工作量,并且过于分散的代码不易于测试和维护。尽管采用一些设计模式的思想的方法可以减少修改代码的工作量,但这依然不可避免的要更改原有代码,并且要重新打包并发布新的版本。如果用户的文档是非结构化的,那么就算是对每个模块进行一点小小的更改豹工作量也是惊人的。并且修改后的代码过于分散,这样

3、不仅不易于测试而且很可能引发新的错误。而且第一次的修改只会给第二次的修改带来更大麻烦,而丝毫无法减少第二次的需求变更带来的代价。针对这种情况,本文提出并使用了S p r i n g 架构,s 砸n gA O P 技术,通过对原有J 2 E E 程序进行少量的修改把其变为基于S p d n g 架构的软件系统。然后,在S p r i n g 架构的基础上通过使用s p r i n gA O P 技术为原 有系统注入用户所期望的某方面功能。2 1A O P2A O P 与S p n n g 技术面向对象的模块性是对结构化编程的重大改进,它带来了更为简洁、更好理解的软件。但是,“O O P把注意力集

4、中到功能以及对象、类的设计与实现,而忽视了组件中的一些相同特性”f 4 J 。换句话说,O O P更多得从系统的垂直切面关注问题。比如:开发者可以看到,在系统中到处都是日志、安全性、事务以及其他企业服务方面的代码,它们大量而且相对分散的存在于各个实现类中。 A O P 允许开发者动态修改o o P的静态模型,即不用修改原始的o o 模型,甚至不用修改o o 代码本身,即可以完成对横切面问题的解决”。例如:将系统中处理日志、安全性、事务及其他企业级服务的代码集中放置在一个地方,通过I o C( I n v e r s i o no f C o n t r o l ,控制倒转) ,或者动态代理机制

5、进行集中调用。因此,A O P 使得O O P 中的重复代码大范围的减少。A O P 四个主要内容如下:+ 作者简介I 金兆毅( 1 9 8 1 1 0 - ) 辽宁鞍山人。硕士,研究方向为软件工程。袁兆山( 1 9 4 5 ) 山东枣庄人,教授,研究方向为软 件工程。基于S D r i n g 架构向已有W e b 软件注入方面3 2 71 方面( A s p e c t ) 对象操作过程中的个截面,是大部分类的一个关注点,是A O P 的关键术语。例如:企业级服务的事 务管理就是大部分类的一个关注点,是一个方面。2 连接点( 1 0 i n P o i n t ) 程序运行过程中的某个阶段

6、点。如某个方法调用,或者某个异常被抛出。通过这个连接点触发方面的执行。3 处理逻辑( A d v i c e ) 在某个连接点采用的处理逻辑,处理逻辑的调用模式通常分为四种:B e f o r e ( 在连接点之前插入预处理 过程) ;A f t e r ( 在连接点之后插入后处理过程) ;A r o u n d ( 在连接点前后分别插入预处理过程和后处理过程) ; T h r o w ( 在异常抛出时插入处理过程) 。4 横切点( P o i n t C u t ) 一系列连接点的集合,它指明处理逻辑( A d v i c e ) 将在何时被触发。2 2S p r i n g 架构及S p

7、r i n gA O P根据本文的需要这里只叙述S p r i n g 架构的核心模块以及s p r i n gA O P ,S p r i n g 的层次结构图如图1 所示。图1S p r i n g 架构层次圈“S p r i n g 核心模块:是S p r i n g 架构的基础。它提供了l o ( 2 ( I n v e r s i o no fC o n t r o l ,控制倒转) 容器,这又是S p r i n g 的核心” 3 10 负责控制对象的生命周期和对象间的关系,所有的类都会在s p r i n g 容器中登记,告诉s p r i n g 你是个什么东西,你需要什么东西

8、,然) 舌s p r i n g 会在系统运行到适当的时候,把你要的东西主动给你,同时 也把你交给其他需要你的东西。所有的类的创建、销毁都l 扫s p f i n g 来控制,也就是说控制对象生存周期的不 再是引用它的对象,而是s p r i n g 。S p r i n g 通过读取配置文件来管理所有的对象以及它们之间的关系。而I o C 容 器对对象的管理主要使用了工厂模式。 S p r i n g A O P ;是S p r i n g 架构的重要组成部分,它实现了A O P 珙盟约定的接口。并且通过s 两n gI o C 容器 来管理面向方面的实现,这里S p r i n gI o C

9、 容器主要使用了代理工厂模式。3 向普通w e b 软件注入方面的实现为了向已有W e b 软件注入方面,这里我们的主要工作分为两部分:( 1 ) 改造原有系统使其基本上满足S p r i n g 架构: ( 2 ) 利用S p r i n g A O P 技术为基于s p r i n g 架构的软件注入方面。3 1 改造原有系统使其基本上满足S p r i n g 架构现有系统为B I S 结构的普通w e b 应用软件,使用J S P 作为客户端显示界面,使用S e r v l e t 来响应客户的请求,J a v a B e a n 负责处理业务逻辑。它们的处理流程如图2 所示:为了使原

10、有系统符合S p r i r t g 架构就要引入S p r i n g 包,并修改相应代码。为了使代码的变动达到最小化我们决定只改动S c r v l e t 这个中间层,然后通过书写S p r i n g 架构的X M L 配置文件a p p c o n t e x t x m l 把J a v a B e a n配置到S p r i n gI o C 容器中,使其符合s 喇n g 架构e调来圈2 普通W e b 软件处理流程对S e r v l e t 的修改只包含两个部分:( ”引入S p r i n g 框架包;添加代码来读取s p a n g 架构配置文件a p p c o n t

11、 e x t x m l :并创建一个J a v a B e a n的工厂。为调用J a v a B e a n 的方法做准备。( 2 ) 修改代码,以前的S e r v l e t 使用n e w 方法创建一个J a v a B e a n 。然后调用这个J a v a B e a n 的方法。现在把这部分代码改为:利用第一步创建的工厂来获得需要的J a v a B e a n ,然后真接调用J a v a B e a n 的方法。例如:原先的S e r v l e t 通过创建M a n a g e m e n t B e a n 类的一个实例,并调用这个实例的d e l e t ( S

12、t r i n gs q l ) 方 法来删除相应的数据。其代码如下:M a n a g e m e n t B e a nn s e r b e a n - - n c wM a n a g e m e n t B e a n ( ) :建立一个负责删除操作的J a v a B e a nu s e r b e a n d e l e t ( S Q L ) ;调用这个J a v a B e a n 的删除方法,其中S Q L 是要执行删除操作的s q l 语句现在我们把上面的代码改为如下形式,即刹用S p r i n g 架构的C l a s s P a t h R e s o u r c

13、 e ( S t f i n gf i l e ) 方法束读取配置文件。我们这里的配置文件使用X M L 格式的文件;用S p r i n g 架构的X m l B c a n F a c t o r y ( R e s o u r c er e s o u r c e )方法来创建一个工厂,并且调用这个工厂的g e t b e a n ( S t r i n gn a m e ) 方法还获得相应的一个具体实例,然后调用这个实例的d e l e t ( S t r i n gs q l ) 方法来删除相应的数据。修改后的代码如下:R e s o u r c er e s 0 o e = wC

14、l a s s P a t h R e s o u r e e ( a p p c o n t e x L x m l ) ;,读取配置文件B e a n F a c t o r yf a c t o r y = n e wX m l B a n n F a c t o r y ( r e s o u r c e ) :,仓4 建一个J a v a B e a n 的工厂 D e l e t B e a nu s e r b e a n = ( D e l e t B e a n ) f a c t o r y g e t b e a n ( D e l e t B e a n ”) ;,从S

15、 两n gI o C 容器中获得D e l e t B e a n 的一个实例。注意;g e t b e a n O 方法中的D e l e t B e a n 为D e l e t B e a n 这个类在配置文件中对应的逻辑名称 u s e r b e a n d e l e t ( ) ;,调用u s e r b e a n 的删除操作 配置文件a p p c o n t e x t x m l 的相关内容如下:这样就完成了普通w e b 应用软件向基于S p r i n g 架构的w e b 应用软件的转化。虽在这里并看不到什么好处,如果一旦要对原有软件进行变更的话,就可以看出基于S

16、p r i n g 架构的w e b 应用软件的好处了。假如M a n a g e m e n t B e a n 类的d e l e t ( S t r i n gs q l ) 方法不适用了,这样你只需要重写一个类为M a n a g e m e n t B e a n l ,并且重写d e l e t ( S t r i n gs q l ) 方法然后通过修改配置文件,使逻辑类名 D e l e t B e a n ”与实际类名D e l e t B e a n l 建立对基于S p r i n g 架构向已有W e b 软件注入方面3 2 9应关系就可以了,而无须修改任何一部分的代码就可以实现软件的更新了。S p n n g 架构的灵活性并非这么一点,下面将要介绍的向基于S p r i n g 架构的w e b 应用软件中注入方面更能体现出S p r i n g 架构的灵活性。3 2 利用S p r i n gA O P 技术为基于S p r i n g 架构的软件注入方面当把普通w e

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号