英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
Spring框架:发展强大的java应用程序的开放源码java平台
Dashrath Mane, Ketaki Chitnis, Namrata Ojha
摘要:Spring框架的基本概念是本文提出的。Spring框架是一个开源的java平台,为开发功能强大的java应用很容易和迅速的综合基础设施提供支持。Spring框架是一个轻量级的解决方案,是一个潜在的一站式商店,用于构建企业级就绪的应用程序。
索引术语-面向方面编程、依赖注入、IOC容器、ORM。
- 引言
Spring是最流行的应用程序开发框架的企业级java。全球数百万的开发人员使用Spring框架来创建高性能、易于测试、可重用的代码。Spring框架是一个开源的java平台,它最初是由Rod Johnson写的,是第一的Apache 2许可下发布的2003年6月。
Spring在尺寸和透明度方面,是轻量级的。Spring框架的基本版本是2MB。pring框架的核心功能,可用于开发任何java应用程序,但也有在顶部的java EE平台构建Web应用的扩展。Spring框架旨在通过启用基于POJO的编程模型,使J2EE开发更容易使用,并促进良好的编程实践。
Spring框架提供了一个全面的规划和配置模型,基于现代java企业应用在任何部署平台。Spring的一个关键元素是应用程序级的基础设施支持:Spring专注于企业应用程序的“管道”,以便团队可以专注于应用层的业务逻辑,而不必与特定的部署环境建立不必要的联系。Spring包括:
基于XML注释的配置风格的灵活依赖注入
基于基于代理和基于AspectJ的变体的面向方面编程的高级支持。
对诸如Hibernate和Quartz这样的公共开源框架的第一级支持
构建REST MVC应用程序和服务端点的灵活Web框架
Spring是模块化的设计,允许对单个部件(如核心容器或JDBC支持)的逐级采用。虽然所有Spring服务都适合于Spring核心容器,但许多服务也可以以编程的方式在容器外部使用。
2013年7月收到稿件。
Dashrath Mane先生,印度孟买理工学院MCA系助理教授。
NamrataOjha小姐,最后一年的MCA学生,V.E.S.理工学院,孟买,印度。
KetakiChitnis小姐,最后一年的MCA学生,V.E.S.理工学院,孟买,印度。 支持部署平台的范围从独立应用服务器Tomcat和java EE如WebSphere。Spring也是java支持主流云平台的一员,如Heroku,谷歌应用程序引擎,亚马逊Elastic Beanstalk和VMware的云。[ 1 ]
- Spring框架体系结构
Spring可能是所有企业应用程序的一站式商店;然而,Spring是模块化的,允许您选择哪些模块适用于您,而不必引入其余的模块。
Spring框架提供了大约20个模块,这些模块可以根据应用需求来使用。
图1.Spring框架体系结构
核心容器
核心容器由核心、bean、上下文和表达式语言模块组成,其细节如下:
核心模块提供了框架的基本部分,包括IOC和依赖注入特性。
Bean模块提供BeanFactory,这是工厂模式的复杂实现。
上下文模块建立在由核心和bean模块提供的坚实的基础上,它是访问和定义任何配置的对象的介质。应用上下文接口是上下文模块的焦点
表达式语言模块为在运行时查询和操作对象图提供了强大的表达式语言。
数据访问/整合
数据访问/集成层由JDBC、ORM、OXM、JMS和事务模块组成,其细节如下:
JDBC模块提供了一个JDBC抽象层,它消除了繁琐的JDBC相关编码的需要。
ORM模块为流行对象关系映射API提供集成层,包括JPA、JDO、Hibernate和iBATIs。
OXM模块提供了一个抽象层,支持JAXB、Casor、XMLBeans、JiBX和XStand的对象/XML映射实现。
java消息服务JMS模块包含了生产和消费信息的功能。
事务模块支持对实现特殊接口和所有POJOS的类的编程和声明式事务管理。
Web
Web层包括Web、Web servlet、Web Struts和Web Portlet模块,其细节如下:
Web模块提供基本的面向Web的集成特性,如多部分文件上传功能和使用servlet侦听器和面向Web的应用上下文初始化IoC容器。
Web Servlet模块包含Spring的Web应用程序的模型视图-控制器(MVC)实现。
Web Struts模块包含用于在Spring应用程序中集成经典Struts Web层的支持类。
其他:
AOP模块提供面向方面的编程实现,允许您定义方法拦截器和点切割,以干净地解耦实现应分离的功能的代码。
Aspects模块提供了与AspectJ的集成,这又是一个强大而成熟的面向方面编程(AOP)框架。
Instrumentation模块提供了在某些应用服务器中使用的类仪表支持和类加载器实现。
测试模块支持使用JUnit或TestNG框架对Spring组件进行测试。
- SPRING IOC容器
Spring容器位于弹簧框架的核心。容器将创建对象,将它们连接在一起,配置它们,并管理它们从创建到销毁的完整生命周期。Spring容器使用依赖注入(DI)来管理组成应用程序的组件。这些对象被称为Spring bean,我们将在下一章讨论。
容器通过读取提供的配置元数据获取关于实例化、配置和组装哪些对象的说明。配置元数据可以代表可以通过XML、java注释,或java代码。下面的图表是Spring如何工作的高级视图。Spring IoC容器利用java POJO类和配置元数据产生完全配置和可执行的系统或应用程序。
图2. Spring IoC 容器
Spring 提供两种不同类型的容器。
Spring BeanFactory 容器
这是为DI提供基本支持的最简单的容器。Bean工厂和相关接口,如BeanFactoryAware、InitializingBean、DisposableBean等,仍然与Spring集成的大量第三方框架向后兼容。
Spring ApplicationContext 容器
该容器增加了更多企业特有的功能,例如从属性文件中解析文本消息的能力以及向感兴趣的事件侦听器发布应用程序事件的能力。这个容器是由org.springframework.contest.ApplicationContextInterface接口定义的。
ApplicationContext容器包括Bean工厂容器的所有功能,因此一般建议在Bean工厂中。Bean工厂仍然可以用于轻量级应用,如移动设备或基于Applet的应用,其中数据量和速度是重要的。
Beans
构成应用程序主干并由Spring IOC容器管理的对象称为bean。bean是由Spring IOC容器实例化、组装并以其他方式管理的对象。这些bean是用提供给容器的配置元数据创建的,例如,以XML的形式提供。lt;Bean/gt;定义。
Spring 配置元数据
Spring IOC容器与实际配置元数据的格式完全解耦。以下三种重要方法为Spring容器提供配置元数据:基于XML的配置文件。基于注释的配置。基于java的配置。
- 依赖注入(DI)
Spring最常见的技术是控制反转的依赖注入(DI)味道。控制反转(IOC)是一个普遍的概念,它可以以多种不同的方式表达,依赖注入只是控制反转的一个具体例子。
写一个复杂的java应用程序时,应用程序类应尽可能独立其他java类的可能性增加重用这些类和
在进行单元测试时独立于其他类进行测试。依赖注入有助于将这些类粘合在一起,同时保持它们独立。依赖注入究竟是什么?让我们分开看这两个单词。这里,依赖部分转换为两个类之间的关联。例如,A类依赖于B类。现在,让我们来看看第二部分,注入。这意味着B类将被IOC注入A级。
依赖注入可以通过将参数传递给构造函数或通过使用SETTER方法的后期构造来实现。请考虑您有一个应用程序,该应用程序具有文本编辑器组件,并且您想提供拼写检查。你的标准代码看起来是这样的:
public class TextEditor { privateSpellCheckerspellChecker; publicTextEditor() {
spellChecker = new SpellChecker();
}
}
What weve done here is create a dependency between the TextEditor and the SpellChecker. In an inversion of control scenario we would instead do something like this:
public class TextEditor { privateSpellCheckerspellChecker; publicTextEditor(SpellCheckerspellChecker) { this.spellChecker = spellChecker;
}
}
在这里,TextEditor不必担心SpellChecker实现。拼写检查器将独立地实现,并将在TextEditor实例化的时候提供给TextEditor,整个过程由Spring框架控制。我们已经从TextEditor中移除了整个控件,并将其保存在其他地方(即XML配置文件),并且依赖关系(I.类SpellChecker)通过类构造函数被注入到类TextEditor中。因此,控制流已经被依赖注入(DI)“反转”,因为您已经有效地将依赖委托给某个外部系统。 .
第二种注入依赖性的方法是通过TextEditor类的Setter 方法,我们将创建SpellChecker实例,这个实例将用于调用Setter 方法来初始化TextEditor的属性。
依赖注入有几个重要的好处。例如:
因为组件不需要在运行时查找合作者,所以编写和维护它们要简单得多。在Spring的IOC版本中,组件通过暴露JavaBean Stter方法或通过构造函数参数来表达它们对其他组件的依赖性。EJB等效将是JNDI查找,这需要开发人员编写代码来做出环境假设。
出于同样的原因,应用程序代码更容易测试。例如,JavaBean属性简单,核心java和易于测试:简单地写一个独立的JUnit测试方法创建对象并设置相关属性。
一个好的IOC实现保留了强类型。如果需要使用泛型工厂查找合作者,则必须将结果转换为所需类型。这不是一个大问题,但它是不雅的。用IOC表示代码中的强类型依赖关系,框架负责类型转换。这意味着当框架配置应用程序时,类型错配将被错误地提升;您不必担心代码中的类转换异常。
依赖项是显式的。例如,如果应用程序类尝试加载属性文件或在实例化上连接到数据库,则在不读取代码(复杂测试和减少部署灵活性)的情况下,环境假设可能不明显。依赖依赖注入方法,依赖项是显式的,并且在构造函数或JavaBean属性中是明显的。
大多数业务对象不依赖IOC容器API。这使得使用遗留代码和IOC容器内部或外部的易于使用的对象变得容易。例如,Spring用户通常将雅加达公用数据库DBCP 数据源配置为Spring Bean:不需要编写任何自定义代码来执行此操作。我们说IOC容器不是入侵性的:使用它不会入侵依赖API的代码。几乎任何一个POJO 都可以成为Spring Bean工厂的一个组成部分。现有的JavaBeans或具有多参数构造函数的对象工作得特别好,但是Spring还提供了从静态工厂方法实例化对象的唯一支持,甚至提供了由IOC容器管理的其他对象上的方法的独特支持。
依赖注入不同于传统的容器体系结构
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[23697],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。