理学院毕业论文15704.doc

上传人:文库蛋蛋多 文档编号:4029243 上传时间:2023-04-01 格式:DOC 页数:73 大小:186KB
返回 下载 相关 举报
理学院毕业论文15704.doc_第1页
第1页 / 共73页
理学院毕业论文15704.doc_第2页
第2页 / 共73页
理学院毕业论文15704.doc_第3页
第3页 / 共73页
理学院毕业论文15704.doc_第4页
第4页 / 共73页
理学院毕业论文15704.doc_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《理学院毕业论文15704.doc》由会员分享,可在线阅读,更多相关《理学院毕业论文15704.doc(73页珍藏版)》请在三一办公上搜索。

1、南华大学数理学院毕业论文第1章 绪 论 1.1 问题的提出 随着计算机技术的发展,特别是计算机网络技术与数据库技术的发展,使用人们的生活与工作方式发生了很大的改观。网络技术的应用使得计算机之间通信、信息共享成为可能,而数据库技术的应用则为人们提供了数据存储、信息检索、信息分析等功能,从而使得工作更高效地进行。数据库始于20世纪60年代,经过40多年的发展,现在已经形成了理论体系,成为计算机软件的一个重要分支。数据库技术体现了当代先进的数据管理方法,使计算机的应用真正渗透到国民经济各个部门,在数据处理领域发挥着越来越大的作用。而互联网技术的出现,更是进一步丰富的人类生活,数字化生存已经一步步走进

2、我们的生活与工作。互联网技术与数据库技术的结合为计算的在人类生活中的应用带来了巨大的影响。产业信息化,管理现代化,科学化已经成为行业发展的重要课题,这不仅是企业提高自身竞争力,甚至是国家提高综合国力,走向国民富强的重要手段。在我国,中药材销售管理普遍存在各个中药房,但传统的销售方式,缺乏科学的管理,以至于浪费了更多的人力资源。现有系统存在问题的分析,在我国,各类行业中的销售管理系统并非一个新的课题,但对于这种传统而古老的行业大部分没有实现计算机管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,特别是在一些县镇级别的药房,他们跟本不知道计算机管理系统的概念,药房管理都依然由

3、手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。随着社会的发展,信息化是社会进程的必然趋势,销售管理只有只有快,准,精才能发挥其价值。所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。现有的管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提南华大学数理学院毕业论文第 2 页/ 共61页 不上去。还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的。1.2系统开发目标与意义 1.2.1 系统开发目标 本系统是将现代化的计算机技术和传统的药材管理、处方管理工作

4、相结合,按照药房的工作流程设计完成的。为了使系统在药材销售管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:(1)系统应具有实用性、可靠性和适用性,同时注意到先进性。(2)对各个数据库进行动态管理,防止混乱。(3)能够按照用户选择的不同的条件进行简单查询和复合查询。(4)能够对查询结果进行分类汇总,实现报表打印。(5)注意数据的安全性,具有数据备份和恢复的功能。(6)方便用户的操作,尽量减少用户的操作。 1.2.2开发的意义 在各大中小药房,用计算机管理药房的信息已经开始存在。用计算机不但可以提高工作效率,而且还节省了许多人力物力,增强了学校资料的

5、安全性。提高了学校的管理能力,为此,用计算机来管理药房的销售信息,是非常必要的。1.3可行性分析 可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能够解决。 1.3.1经济上可行性 现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为学校的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面: 南华大学数理学院毕业论文第 3 页/ 共61页 (1)本系统的运行可以代替人工进行许多繁杂的劳动;(2)本系统的运行可以节省许多资源;(3)本系统的运行可以大大的提高学校的工作效率;(4)本系统可以使敏感文档更加安全,等等。(5)本系统在经济上是可行的。 1.3.2技术上

6、可行性本系统的开发利用hibernate作为本系统的数据库的操作,它是一个支持多种数据库的O-R mapping 数据库框架,适用于大中规模的数据量需求。使用java编程语言 ,使得系统可能运行在任何操作系统平台上,使用myeclipse作为系统开发的开发工具,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。 1.3.3运行上可行性本系统为一个中药销售管理系统,所

7、耗费的资源非常的小,因此,本系统在运行上是可行的。南华大学数理学院毕业论文第 4 页/ 共61页 第2章 开发环境及开发工具介绍 2.1 JAVA简介 Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,Java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,特别适合在Internet环境上开发的应用系统。Java分为javaee、javame、javase三个平台。2.2MySql数据库介绍

8、 MySQL作为一种开放源码数据库,以其简单易用的特点广泛被广大用户采用,MySQL虽然是免费的,但同Oracle, Sybase, Informix, Db2等商业数据库一样,具有数据库系统的通用性:1) 数据库管理系统。我们知道,所谓的数据库就是一些结构化的数据的联合体,要提供对这些数据的存取、增加、修改、删除或更加复杂的数据抽取等操作,需要有一个支撑系统,这就是数据库管理系统(DBMS),MySQL完全具有这方面的功能。2) 关系型数据库管理系统。在数据库的发展历程中,曾出现过多种不同形式的数据库系统,但关系型数据库管理系统(RDBMS)以其优越性而被广为采用,象现在几种广泛使用的数据库

9、全为关系型数据库。同样,MySQL也是关系型的数据库系统,支持标准的结构化查询语言(Structured Query Language)。3) 开放源码数据库。同商业性的数据库相比,这是MySQL最大的特点。MySQL的源码是公开的,这就意味着任何人,只要遵守GPL的规则都可以对MySQL的源码使用、修改以符合自己特殊的需求。4) 技术特点。MySQL是C/S架构的服务器,服务器端是多线程的,为客南华大学数理学院毕业论文第 5 页/ 共61页 户端提供了不同的程序接口和链接库,如C、C+、Java、Perl、PHP、Tcl等,也提供了简单的管理工具,如mysqladmin,mysql等。MyS

10、QL有如此多的特点,又由于其免费的特点,这就给许多的中小应用提供了不错的选择。 尤其是对一些中小企业,无论是从降低成本,还是从性能方面,采用MySQL作为其数据支 撑系统,都是一种可行的方案。但也应当注意,采用MySQL作为应用数据库,就意味着所有的问题都需要自己解决,要承担一定的风险。2.3Tomcat应用服务器 目前支持JSP的应用服务器是较多的,Tomcat是其中较为流行的一个Web服务器,被JavaWorld杂志的编辑选为2001年度最具创新的Java产品,可见其在业界的地位。Tomcat是一个免费的开源的Serlvet容器,在Tomcat中,应用程序的部署很简单,你只需将你的WAR放

11、到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。Tomcat也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet。Tomcat是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性,越来越受到人们的重视。2.4Eclipse介绍 E

12、clipse是个集成开发环境(Integrated Development Environment),其前身是IBM的Visual Age for Java(VA4J)。Eclipse是可扩展的体系结构,可以集成不同软件开发供应商开发的产品,将他们开发的工具和组件加入到Eclipse平台中。随着Java应用的广泛,各大主要软件供应商都参与到Eclipse架构开发中,南华大学数理学院毕业论文第 6 页/ 共61页 使得Eclipse插件数量与日增加。其中,IBM的WebSphere Studio Workbench是突出的例子。Eclipse平台的免费,架构的成熟,行业协会Eclipse基金会的

13、支持,使得很多的Java开发采用了Eclipse架构。2.4.1Eclipse的结构和内核 插件(plug-in)是遵循一定规范的应用程序结构编写出来的程序,也成为扩展,不同于组件。Eclipse正是一个精心设计的、可扩展的核心结构。通过插件的形式,将根据自己需要选择的扩展开发工具集成到Eclipse平台核心。因此使得可以避免因过去不兼容工具带来的麻烦,降低开发出成本,大幅度提高工作效率。Eclipse本身作为一个开放源码的软件项目,它主要包含3个子项目:平台子项目,Java开发工具(JDT-java)子项目,插件开发环境(PDE-plug-in)子项目。其中,Java开发工具JDT为开发人员

14、提供大量的集成工具集,主要为Java应用程序提供编程接口(API)。Eclipse软件开发工具箱(SDK)是主要有Eclipse本身的项目软件和其他一些开发源吗的第三方软件组成。次者,插件开发环境(JDT)则为插件开发和测试提供相应的环境,如:创建插件清单文件、定义扩展点等。图2-1( ECLIPSE组件图) 其他的Java集成开发环境有Jbuilder、WebSpher Studio、 NetBeans。然而Eclipse以其强大的可扩展性和开放性脱颖而出,拥有为数众多的支持者,也被许多大的企业所青睐2.4.2Eclipse和Myeclipse的结合 Myeclipse是一个商业的j2ee开

15、发插件,建立在eclipse的基础上,支持html,css,js,jsp,servlet,java,j2ee,ejb,web services等等,它的功能非常之强大,和eclipse结合十分完美。 南华大学数理学院毕业论文第 7 页/ 共61页 如果安装了myeclipse建议不要再用其他的插件,因为它已经包括开发需要的,不过很消耗内存的。也可以采用eclipse+lomboz,也基本能满足需要。Myeclipse支持Struts,lomboz也支持,只是功能没有myeclipse强大,MyEclipse是收费的,lomboz是免费的。在myeclipse里面还可以建立与数据库的连接和查询操

16、作,而且还自带了web浏览器,比如你在编写一些基本servlet时,不用打开IE新窗口了,直接在eclipse里用web浏览器就可以看到。Eclipse是一个集成的进行JAVA开发的IDE开发环境,并且是开源的,MyEclipse是一种插件,为J2EE开发提供一种高级编程环境,可以轻松的完成struts,Hibernate,Spring布局,编写strtus-config.xml。Eclipse 是一个IDE(Integrated Developing Environment),而这个IDE是允许安装第三方开发的插件来使自身的功能得到扩展和增强的,而Myeclipse就是其中的一种有名的插件集

17、之一,MyEclipse将开发者常用到的一些有用的插件都集合起来,但它是收费的。MyEclipse为Eclipse提供了一个大量私有和开源的Java工具的集合,这解决了各种开源工具的不一致和缺点。NitroX是一个繁杂而强大的加速Java Web应用开发的工具,还包含了一个强大且能够编译所有JSP和Struts Web应用的工具AppXRay。这些工具解析Java和XML配置文件.MyEclipse的实际价值来自包含的发布包中的大量的工具。如CCS/JS/HTML/XML的编辑器,帮助创建EJB和Struts项目的向导并产生项目的所有主要的组件如action/session bean/form

18、等。还包含编辑Hibernate配置文件和执行SQL语句的工具。2.5开放方案及相关技术介绍 本系统选择Mysql作为后台的数据库,选择JAVA、JSP、Servlet,JavaScript、Html作为应用程序开发技术,运用Tomcat服务器技术,整个系统完全基于B/S (Browser/Server)模式进行设计。系统架构采用mvc模式, 其中Jsp,Html用于表现层的开发,采用struts2.0发源框架。2.6JSP技术介绍 JSP的全称是Java Server Pages,它是SUN推出的一种动态网页技术标南华大学数理学院毕业论文第 8 页/ 共61页 准。它在传统的静态页面文件(*

19、.html,*.htm)中加入JAVA程序片段和JSP标记,就构成了JSP页面。2.7JSP工作原理 在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个servlet。而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,j

20、spInit()方法在servlet的生命周期中只被执行一次。然后jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。虽然JSP效率很高,但在第一次调

21、用时由于需要转换和编译而有一些轻微的延迟。此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入垃圾收集处理。jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资源。2.8JavaBean简介 JavaBean是一种基于Java的软件组件,JavaBean和Active控件一样,可以通过封装业务逻辑建立

22、一整套可重复利用的对象库。JSP对于在Web应用中集成南华大学数理学院毕业论文第 9 页/ 共61页 JavaBean组件提供了完善的支持,这种支持不仅能缩短开发时间(可以直接利用经过测试和可信任的已有组件),避免重复开发,也为JSP应用带来了更多的可伸缩性。JavaBean组件可以用来执行复杂的计算任务,或负责与数据库的交互及数据提取等。由于Java语言在这些方面所具有的特点和优势,使得基于它的软件JavaBean组件技术倍受人们关注。它的任务就是:一次编写,可以在任何地方执行,可以在任何地方重用。JavaBean组件可以在任何地方重用包括了可以在应用程序、其他组件、文档、Web站点和应用程

23、序构造器工具等多种方案中再利用。为了创建和使用Java软件组件,JavaBean被实现为一种独立于平台和结构的应用程序接口,它的实现可以忽略内部的结构和细节问题,只需定义其外部的特征及对外功能就行。其中,属性、方法和事件三种接口可以独立对外进行开发。2.9B/S 开发模式 伴随着Internet的迅速发展,计算机技术正在由基于C/S(client/ Server)模式的应用系统转变为基于B/S模式的应用系统。过去,网络软件的开发都采用C/S(client)模式,在这种模式下,主要的业务逻辑都集中于客户端程序,因此,必然导致以下问题:(1) 系统安装、调试、维护和升级困难。由于客户端的硬件配置可

24、能存在差异,软件环能各不相同,因此,在安装时,必须对每一个客户端分别进行配置,同样,在软件升级时也要对客户端分别处理。(2) 在整个系统中,业务逻辑和用户界面都集中到了客户端,必然会增加安全隐患。B/S模式带来了巨大的好处:(3) 开发成本及维护成本降低。由于B/S架构管理软件只安装在服务器端(Server)上,即应用程序在部署、升级、维护时,只需要在服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现,极少部分事务逻辑在前端(Browser)实现,所有的客户端只有浏览器,网络管理人员只需要做硬件维护。 南华大学数

25、理学院毕业论文第 10 页/ 共61页 (4) 良好的安全性能,防火墙技术可以保证后台数据库的安全性。所有的配置工作都集中在服务器端且所有客户端请求都是通过DBMS来访问数据库,从而大大减少了数据直接暴露的风险。2.10Struts 2框架架构 Struts 2的体系与Struts 1体系的差别非常大,因为Struts 2使用了WebWork的设计核心,而不是使用Struts 1的设计核心。Struts 2大量使用拦截器来处理用户请求,从而允许用户的业务逻辑控制器与Servlet API分离。从数据流图上来看,Struts 2与WebWork相差不大,Struts 2同样使用拦截器作为处理(A

26、dvice),以用户的业务逻辑控制器为目标,创建一个控制器代理。控制器代理负责处理用户请求,处理用户请求时回调业务控制器的execute方法,该方法的返回值将决定了Struts 2将怎样的视图资源呈现给用户。下面显示了Struts 2的体系概图。图2-2(STRUTS2框架体系) Struts 2框架的大致处理流程如下:(1) 浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。(2)核心控制器FilterDispatcher根据请求决定调用合适的Action。(3)WebWork的拦截器链自动对请求应用通用功能,例如workflow、valid

27、ation或文件上传等功能。 南华大学数理学院毕业论文第 11 页/ 共61页 (4)回调Action的execute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。(5)Action的execute方法处理结果信息将被输出到浏览器中,可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。2.11Hibernate介绍 Hibernate不仅仅

28、管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。对于以数据为中心的程序来说,它们往往只在数据库中使用存储过程来实现商业逻辑,Hibernate可能不是最好的解决方案;对于那些在基于Java的中间层应用中,它们实现面向对象的业务模型和商业逻辑的应用, Hibernate是最有用的。不管怎样,Hibernate一定可以帮助你消除或者包装那些针对特定厂商的SQL代码,并且帮你把结果集从表格式的表

29、示形式转换到一系列的对象去。2.12Spring 介绍 早在2004年初,Martin Fowler在他的站点上问读者:当谈论控制反转时:“问题在于,它们转变的是什么方面的控制?”。 一翻讨论后,Fowler建议重命名该原则(或至少给它一个更加明确的名称),并开始使用 依赖注入这个术语。 并且,在他的文章中进一步解释了控制反转(IoC)和依赖注入(DI)的原则思想。如果您想对控制反转和依赖注入有更深入的理解, Java应用(从applets的小范围到全套n层服务端企业应用)是一种典型的依赖型应用,它就是由一些互相适当地协作的对象构成的。因此,我们说这些对象间存在依赖关系。 南华大学数理学院毕业

30、论文第 12 页/ 共61页 Java语言和Java平台在架构应用与建立应用方面,提供着丰富的功能。从非常基础的基本数据类型和Class(即定义新类)组成的程序块,到建立具有丰富的特性的应用服务器和web框架都有着很多的方法。一方面,可以通过抽象的显著特性让基础的程序块组成在一起成为一个连贯的整体。这样,构建一个应用(或者多个应用)的工作就可以交给架构师或者开发人员去做。因此,我们就可以清晰的知道哪些业务需要哪些Classes和对象组成,哪些设计模式可以应用在哪些业务上面。 例如:Factory、Abstract Factory、Builder、Decorator 和 Service Loca

31、tor 这些模式(列举的只是少数)在软件开发行业被普遍认可和肯定(或许这就是为什么这些模式被定型的原因)。 这固然是件好事,不过这些模式只是一个有名字的,有说明的,知道最好用在什么地方的,解决应用中什么问题的最佳实践而已。 在本章节的最后,用“. 说明 .”给出了模式说明。 通常,模式书籍与wikis通常都列出了你可以获得的最佳实践,不过,希望你思考之后,在你自己的应用中 实现自己的模式。Spring的IoC控件主要专注于如何利用classes、对象和服务去组成一个企业级应用,通过规范的方式,将各种不同的控件整合成一个完整的应用。Spring中使用了很多被实践证明的最佳实践和正规的设计模式,并

32、且进行了编码实现。如果你是一个,构架师或者开发人员完全可以取出它们集成到你自己的应用之中。这对于那些使用了Spring Framework的组织和机构来说,在spring基础上实现应用不仅可以构建优秀的,可维护的应用并对Spring的设计进行验证,确实是一件好事情。2.12.1Spring概览 Spring框架包含许多特性,并被很好地组织在下图所示的七个模块中。本节将依次介绍每个模块。 南华大学数理学院毕业论文第 13 页/ 共61页 图 2-3(SPRING框架结构图) Core 封装包是框架的最基础部分,提供IoC和依赖注入特性。这里的基础概念是BeanFactory,它提供对Factor

33、y模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。构建于Core封装包基础上的 Context封装包,提供了一种框架式的对象访问方法,有些象JNDI注册器。Context封装包的特性得自于Beans封装包,并添加了对国际化(I18N)的支持(例如资源绑定),事件传播,资源装载的方式和Context的透明创建,比如说通过Servlet容器。DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC 封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plai

34、n old Javaobjects)都适用。ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。 其中包括JPA、JDO、Hibernate 和 iBatis 。利用ORM封装包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。而且,利用so

35、urce-level的元数据功能,还可以将各种南华大学数理学院毕业论文第 14 页/ 共61页 行为信息合并到你的代码中,这有点象.Net的attribute的概念。Spring中的 Web 包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的applicationcontext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。Spring中的MVC封装包提供了Web应用的Model-View-Controller(MVC)实现。Spring的MVC框架并不是仅仅提供一种

36、传统的实现,它提供了一种 清晰的 分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。2.12.2Spring的工作原理 2.12.2.1 IoC容器Interface21公司推出的Spring开发框架(以下简称Spring)经过开放源代码社区和众多项目的应用和实际检验,历经多个版本的发展,已经成长为使用开源技术开发J2EE应用的事实标准。Spring运用“控制反转(以下缩写为IoC)”和“面向方面编程”(以下缩写为AOP)的理念,在正规的设计模式和一整套最佳实践的支持下,为普通Java对象提供了包括轻量级IoC容器、AOP支持、声明式事务、对象-关系模

37、型映射、J2EE集成工具、Web开发框架集成工具和基本的MVC实现等7个主要方面的特性和服务。IoC的概念最早来自于2004年Martin Fowler提出的一种组件装配模式,其核心观点是将组件的配置与使用分开1。Spring的IoC容器提供这样一种功能:为那些组成应用程序的主体和其他需要由容器管理的对象(称为bean)提供实例化、定位、配置支持,并通过容器核心接口org.springframwork.beans.factory. BeanFactory的多个实现的支持,描述并建立并管理这些对象之间的依赖关系。最常见的方式是通过XML配置元数据来对容器管理的bean进行定义,通过Setter注

38、入和构造器注入两种主要的依赖注入方式实现bean之间的依赖管理,从而实现高层次的松耦合。Spring2.0版本为元数据的XML配置方式提供基于XML Schema的“自定义标签”功能,即通过第三方命名空间将自定义bean的配置引入IoC容器南华大学数理学院毕业论文第 15 页/ 共61页 的元数据配置,在应用程序开发中更好的融合Spring的IoC功能。2.12.2.2 动态语言支持动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码,但是不方便调试,命名不规范时往往难于理解;而静态类型语言则具有结构非常规范,便于调试,方便类型安全等优点,缺点是为此需要写更多的类型相关代码,导致不便

39、于阅读。诸如Javascript, Ruby等动态语言具有动态类型、解释执行等优点,并且在多个领域中具有独特的优势,在Java语言中提供对动态语言的支持,其初衷来自于使用动态语言访问Java平台中的信息,并且可以在Java平台的应用服务器中运行动态语言编写的页面。此需求后来形成名为JSR-223的请求正式提交至Java社区,目前已经形成以javax.script命名的一套编程接口,并且Java社区为多种不同动态语言提供了该接口的参考实现,其中对Javascript的支持目前直接包含在JDK6的正式版本中。结合Spring提供的XML元数据配置的可扩展性,从对ScriptBeanDefiniti

40、onParser类的代码分析可以看出,IoC容器通过如下步骤注册动态语言实现的bean对象:在IoC容器中创建一个ScriptFactoryPostProcessor类型的对象实例作为基础设施获取注入依赖能力;获取脚本代码片断;为ScriptFactory实例配置基本属性;包括刷新脚本资源的时间间隔、指定构造方法等等;解析元数据配置中注入的属性。通过如上步骤,IoC中采用动态语言支持的bean定义就与其他Java语言构造的bean定义没有本质区别了。Spring的优点在于可以通过注入依赖的方式,使用动态语言编写bean实现,和其他Java对象毫无差别的轻易获取Spring提供的各项特性支持。包

41、括在bean的一个生命周期内修改其实现逻辑、简化实现步骤、减少代码规模等等。2.12.3Spring的特点 南华大学数理学院毕业论文第 16 页/ 共61页 2.12.3.1 控制反转和依赖注入注释:由容器控制程序之间的关系,而非传统实现中,有程序代码直接操控。控制权有应用代码中转到了外部容器,控制权的转移,是所谓反转。注入类型:接口注入,设置注入,构造子注入。而Spring则是IOC的一个容器。在Spring中,所谓依赖注入,即在运行期由容器将依赖关系注入到组件之中。讲的通俗点,就是在运行期,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法进行设定。2.12.3.

42、2 Spring Bean封装机制Spring 从核心而言,是一个DI 容器,其设计哲学是提供一种无侵入式的高扩展性框架。即无需代码中涉及Spring专有类,即可将其纳入Spring容器进行管理。作为对比,EJB则是一种高度侵入性的框架规范,它制定了众多的接口和编码规范,要求实现者必须遵从。侵入性的后果就是,一旦系统基于侵入性框架设计开发,那么之后任何脱离这个框架的企图都将付出极大的代价。为了避免这种情况,实现无侵入性的目标。Spring 大量引入了Java 的Reflection机制,通过动态调用的方式避免硬编码方式的约束,并在此基础上建立了其核心组件BeanFactory,以此作为其依赖注

43、入机制的实现基础。org.springframework.beans包中包括了这些核心组件的实现类,核心中的核心为BeanWrapper和BeanFactory类。这两个类从技术角度而言并不复杂,但对于Spring 框架而言,却是关键所在。Spring的好处:1Spring能有效地组织你的中间层对象;2Spring能消除在许多工程中常见的对Singleton的过多使用;3通过一种在不同应用程序和项目间一致的方法来处理配置文件,消除各种自定义格式的属性文件的需要,仅仅需要看看类的JavaBean属性。Inversion ofControl的使用帮助完成了这种简化;(使用的是type2的IoC)

44、南华大学数理学院毕业论文第 17 页/ 共61页 4能够很容易培养你面向接口而不是面向类的编程习惯。5Spring的设计会让使用它创建的应用尽可能少的依赖于它的APIs,在Spring应用中的大多数业务对象没有依赖于Spring。6使用Spring构建的应用程序易于单元测试;7Spring使EJB成为一个实现选择,而不是必需的选择。你可以用POJOs或local EJBs来实现业务接口,却不会影响到调用代码。8Spring提供一些web应用上的EJB的替代方案,比如用AOP提供声明性事务管理;9Spring为数据存取提供了一个一致的框架,不论是使用JDBC还是O/Rmapping的产品(Hibernate,JDO)。2.13JAVA开源项目 2.1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号