英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
Spring Framework:用于开发健壮的 Java 应用程序的开源 Java 平台
摘要: 本文介绍了Spring框架的基本概念。Spring框架是一个开源Java平台,为开发强大的Java应用程序提供了全面的基础架构支持 ,非常容易和非常快速。Spring Framework是一个轻量级的解决方案,也是构建企业就绪应用程序的潜在一站式商店。
包含:面向方面的编程、依赖关系注入、IoC 容器、ORM。
- 介绍
Spring是企业Java最流行的应用程序开发框架。全球数以百万计的开发人员使用Spring框架来创建高性能,易于测试,可重用的代码。Spring框架是一个 开源Java平台,它最初由Rod Johnson编写,并于2003年6月在Apache 2.0许可证下首次发布。
Spring框架的基本版本约为2MB。Spring Framework的核心功能可用于开发任何Java应用程序,但是有一些扩展可用于在Java之上构建Web应用程序。Spring框架的目标是通过启用基于POJO的编程模型,使J2EE开发更易于使用并促进良好的程序管理实践。
Spring框架为基于Java的现代企业应用程序提供了全面的编程和配置模型,在任何类型的 部署平台上。Spring的一个关键要素是应用程序级别的基础设施支持:Spring专注于企业应用程序的'管道',以便团队可以专注于应用
程序级别的业务逻辑,而无需与特定的部署环境建立不必要的联系。
Spring包括:
1.通过基于 XML 注释的配置样式实现灵活的依赖关系注入
2.高级支持面向方面的编程,包括基于代理和基于 Aspect的变体。
3.对常见开源框架(如Hibernate和Quartz)的一流支持
4.用于构建 RESTful MVC 应用程序和服务端点的灵活Web框架
Spring采用模块化设计,允许逐步采用单个部件,如核心容器或JDBC支持。虽然所有Spring 服务都非常适合Spring核心容器,但许多服务也可以在容器外部以编程方式使用。支持的部署平台范围 从独立应用程序到 Tomcat 和 Java EE 服务器(如 WebSphere)。Spring也是支持Java的主要云平台上的一等公民,例如Heroku,Google App Engine,Amazon Elastic Beanstalk和VMware的Cloud Foundry。
- SPRING 框架体系结构
Spring可能是您所有企业应用程序的一站式商店,但是,Spring是模块化的,允许您挑选适合您的模块,而不必引入其余模块。Spring框架提供了大约20个模块,可以根据应用程序要求使用这些模块。
图 1.Spring Framework Architecture
A.Core Container
1.核心容器由核心、Bean、上下文和表达式语言模块组成, 其详细信息如下:
2.核心模块提供了框架的基本部分,包括 IOC 和依赖注入功能。
3.Bean 模块提供了 BeanFactory,它是 factory 模式的复杂实现。
4.上下文模块建立在 Core 和 Beans 模块提供的坚实基础上,是访问任何已定义和配置对象的媒介。ApplicationContext 接口是上下文模块的焦点。
表达式语言模块提供了一种功能强大的表达式语言,用于在运行时查询和操作对象图。
B. 数据访问/集成
数据访问/集成层由 JDBC、ORM、OXM、JMS 和事务模块组成,其下调如下:
1.JDBC 模块提供了一个 JDBC 抽象层,无需进行繁琐的 JDBC 相关编码。
2.ORM 模块为流行的对象关系映射 API 提供了集成层,包括 JPA、JDO、Hibernate 和 iBatis。
3.OXM 模块提供了一个抽象层,该抽象层支持 JAXB、Castor、XMLBeans、JiBX 和 XStream 的 Object/XML 映射实现。
4.Java 消息服务 JMS 模块包含用于生成和使用消息的功能。
5.事务模块支持实现特殊接口的类和所有 POJO 的编程和声明性事务处理。
C. 万维网
Web层由Web,Web-Servlet,Web-
支柱和 Web Portlet 模块,其详细信息如下:
1.Web 模块提供面向基本网络集成功能,例如分段文件上传功能以及使用 servlet 侦听器和面向 Web 的应用程序上下文初始化IOC容器。
2. Web-Servlet模块包含Spring针对Web应用程序的模型- 视图 - 控制器(MVC)实现。
3. Web-Struts 模块包含用于在 Spring 应用程序中集成经典 Struts Web 层的支持类。
D. 其他:
1. AOP 模块面向面向方编程实现允许您 定义方法拦截器和点切割,以干净地解耦实现应分离的功能的代码。
2. Aspect模块提供了与AspectJ的集成,AspectJ又是一个强大而成熟的面向方面编程(AOP)框架。
3. 检测模块提供的类检测支持和类加载器要在某些应用程序服务器中使用的实现。
4. 测试模块支持使用JUnit或TestNG框架测试Spring组件。
三、Spring IOC容器
Spring 容器是 Spring 框架的核心。容器将创建对象,将它们连接在一起,配置它们,并管理从创建到销毁的整个生命周期。Spring 容器使用 dependency 注入 (DI) 来管理组成应用程序的组件。这些对象称为Spring Beans,我们将在下一章中讨论。
容器通过读取提供的配置元数据来获取有关要实例化、配置和组装哪些对象的说明 。配置元数据可以用 XML、Java 注释或 Java 代码表示。下图是Spring工作原理的高级视图。Spring IoC容器利用Java POJO类和配置元数据来生成完全配置和可执行的系统或应用程序。
图 2. IOC 容器
Spring提供以下两种不同类型的容器。
A. Spring BeanFactory Container
这是 为 DI 提供基本支持的最简单的容器。BeanFactory和相关接口,如BeanFactoryAware,InitializingBean,DisposableBean,仍然存在于Spring中,以便与与Spring集成的大量第三方frameworks向后兼容。
B. Spring ApplicationContext Container
此容器添加了更多特定于企业的功能,例如能够解析属性文件中的文本消息,以及将应用程序事件发布到插入事件侦听器的功能。此容器由 org.springframework.context.ApplicationContextinterfac e 定义。
ApplicationContext 容器包含 BeanFactory 容器的所有功能,因此通常建议使用 BeanFactory。BeanFactory仍然可以用于轻量级应用程序,如移动设备或基于小程序的应用程序,其中数据量和速度很重要。
C. Beans
构成应用程序主干并由Spring IoC容器管理的对象称为bean。Bean 是由 Spring IoC 容器实例化、组装和以其他方式管理的对象。这些 Bean 是使用您提供给容器的配置元数据创建的,例如,在 XML lt;bean/gt; 定义的范围内。
D.Spring Configuration Metadata
Spring IOC 容器与实际写入此配置元数据的格式完全分离。有以下三种重要方法可以为Spring容器提供配置:
1.基于 XML 的配置文件
2.基于注释的配置
3.基于 Java 的配置
四、依赖注入 (DI)
Spring最认同的技术是控制反转的依赖注入(DI)风格 。控制反转(IoC)是一个一般概念,它可以用许多不同的方式表示,依赖注入只是控制反转的一个具体例子。
在编写复杂的 Java 应用程序时,应用程序 类应尽可能独立于其他 Java 类,以增加重用这些类和在执行单元测试时独立于其他类对其进行测试。依赖注入有助于将这些类粘合在一起,同时保持它们的独立性。究竟是依赖注入吗?让我们分别看一下这两个词。在这里,依赖关系部分转换为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看第二部分,注射。这意味着 B类将由IoC注入A类。
依赖关系注入可以通过将参数传递给构造函数的方式发生,也可以通过使用 setter 方法进行后期构造来实现。假设您有一个应用程序,该应用程序具有文本 编辑器组件,并且您希望提供拼写检查。您的标准代码将如下所示:
public class TextEditor {
privateSpellCheckerspellChecker;
publicTextEditor() {
spellChecker = new SpellChecker();
}
}
我们在这里所做的是解释文本编辑器和拼写检查器之间的依赖关系。在控制反转场景中,我们将执行如下操作:
public class TextEditor { privateSpellCheckerspellChecker; publicTextEditor(SpellCheckerspellChecker) { this.spellChecker = spellChecker;
}
}
在这里,TextEditor不应该担心拼写检查器的实现。SpellChecker将独立实现,并将在TextEditor实例化时提供给TextEditor,整个过程由Spring框架控制。我们已经从TextEditor中删除了完全控件,并将其保留在其他地方(即。XML 配置文件)和依赖项(即.class SpellChecker)通过类构造函数注入到类 TextEditor 中。Thus 控制流已被依赖注入 (DI) '反转',因为您有效地将依赖关系委派给某些外部系统。
注入依赖关系的第二种方法是通过TextEditor类的 Setter 方法,我们将在其中创建 SpellChecker 实例,并且此实例将用于调用 setter 方法来初始化 TextEditor 的属性。
依赖注入有几个重要的好处。例如:
1.由于组件不需要在运行时查找协作者,因此它们的编写和维护要简单得多。在Spring版本的IOC中,组件通过公开JavaBean setter方法或通过构造函数参数来表达它们对其他组件的依赖性。EJB 等效项是 JNDI 查找,它要求 开发人员编写做出环境假设的代码。
2.出于同样的原因,应用程序代码更易于测试。例如,JavaBean 属性是简单、核心的 Java,并且易于测试:只需编写一个独立的 JUnit 测试方法来存储对象并设置相关属性。
3.良好的 IoC 实现可保留强类型。如果需要使用泛型工厂查找协作者,则必须将结果转换为所需的类型。这不是一个大问题,但它是不雅的。使用 IoC,您可以在代码中表达强类型依赖项,框架负责类型转换。这意味着当框架配置应用程序时,类型不匹配将引发为错误;您不必担心代码中的类强制转换异常。
4.依赖关系是显式的。例如,如果应用程序类尝试在实例化时加载属性文件或连接到数据库,则如果不阅读代码(合并测试并降低部署灵活性),环境假设可能并不明显。使用依赖注入方法,依赖关系是显式的,并且在构造函数或 JavaBean 属性中很明显。
5.大多数业务对象不依赖于 IoC 容器 API。这使得 使用旧代码变得容易,并且易于使用 IoC 容器内部或外部的对象。例如,Spring用户经常将Jakarta Commons DBCP DataSource配置为Spring Bean:无需编写任何自定义代码即可执行此操作。我们说 IoC 容器不是侵入性的:使用它不会侵犯依赖于其 API 的代码。几乎任何POJO都可以成为春豆工厂的一个组成部分。现有的JavaBeans或具有多参数构造函数的对象工作得特别好,但Spring还提供了独特的支持,用于从静态工厂方法实例化对象,甚至是IoC容器管理的其他对象上的方法。
依赖注入与传统的容器体系结构(如 EJB)不同,它最大限度地减少了 应用程序代码对容器的依赖性。这意味着您的业务对象可以在不同的依赖注入框架中运行 - 或者在任何框架之外运行,而无需更改代码。
依赖注入并不是一个新概念,尽管它最近才在 J2EE 社区中成为黄金时段。有替代的DI容器:特别是
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[603554],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。