

英语原文共 7 页,剩余内容已隐藏,支付完成后下载完整资料
Spring框架:一个开发健壮Java应用程序的开源Java平台
摘要:本文介绍了Spring框架的基本概念。Spring框架是一个开放源码的Java平台,它提供了全面的基础设施支持,可以非常容易、非常快速地开发健壮的Java应用程序。Spring框架是一个轻量级的解决方案,是构建企业级应用程序的一个潜在的一站式解决方案。
1.介绍
Spring是企业Java最流行的应用框架。全球数百万开发人员使用Spring框架来创建高开发性能、易于测试、可重用代码。Spring框架是一个开源Java平台,最初由Rod Johnson编写,并于2003年6月在Apache 2.0许可下首次发布。
Spring在大小和透明度方面是轻量级的。spring框架的基本版本大约是2MB。Spring框架的核心特性可以用于开发任何Java应用程序,但也有用于在Java EE平台上构建web应用程序的扩展。Spring框架的目标是使J2EE开发更容易使用,并通过启用基于POJO的编程模型来促进良好的编程实践。
Spring框架提供了一个全面的现代的基于java的企业应用程序的编程和配置模型——在任何类型的部署平台上。Spring的一个关键元素是应用程序级别的基础设施支持:Spring关注企业应用程序的“管道”,这样团队就可以专注于应用程序级别的业务逻辑,而无需与特定部署环境建立不必要的联系。包括:
灵活的依赖注入与XML注释——基础配置风格
使用基于代理和基于aspectj的变体,对面向方面编程的高级支持
对Hibernate和Quartz等公共开源框架提供一流的支持
一个用于构建RESTful MVC的灵活的web框架应用程序和服务端点
Spring在设计上是模块化的,允许对单个部件(如核心容器或JDBC支持)的增量采用。虽然所有Spring服务都非常适合Spring核心容器,但许多服务也可以在容器之外以编程的方式使用。
支持的部署平台范围从独立的应用程序到Tomcat和Java EE服务器(如WebSphere)。Spring也是支持Java的主流云平台的一等公民,例如Heroku、谷歌App Engine、Amazon Elastic Beanstalk和VMware的cloud Foundry。
2.Spring框架体系结构
Spring可能是所有企业应用程序的一站式商店;但是,Spring是模块化的,允许您选择哪些模块适用于您,而不必引入其他模块。Spring框架提供了大约20个模块,可以根据应用程序的需求使用它们。
Spring框架体系结构
A.核心容器
核心容器由核心、bean、上下文和表达式语言模块组成,它们的详细信息如下:
Core模块提供了框架的基本部分,包括IoC和依赖注入特性。
Bean模块提供了BeanFactory,它是工厂模式的成熟实现。
Context模块构建在Core和Beans模块提供的坚实基础上,它是访问定义和配置的任何对象的媒介。ApplicationContext接口是Context模块的焦点。
Expression Language模块为在运行时查询和操作对象图提供了强大的表达式语言。
B.数据访问和集成
数据访问/集成层由JDBC、ORM、OXM、JMS和事务模块组成,具体如下:
JDBC模块提供了一个JDBC抽象层,从而消除了进行繁琐的JDBC相关编码的需要。
有道翻译字数限制为5000字,“e ”及其后面没有被翻译!
ORM模块为流行的对象关系映射api(包括JPA、JDO、Hibernate和iBatis)提供了集成层。
OXM模块提供了一个抽象层,它支持JAXB、Castor、XMLBeans、JiBX和XStream的对象/XML映射实现。
Java Messaging Service JMS模块包含用于生成和使用消息的功能。
Transaction模块为实现特殊接口的类和所有pojo支持编程式和声明式事务管理。
C .网络
Web层包括Web、Web- servlet、Web- struts和Web- portlet模块,具体内容如下:
Web模块提供了基本的面向Web的集成特性,比如多部分文件上传功能,以及使用servlet监听器和面向Web的应用程序上下文初始化IoC容器。
web - servlet模块包含用于web应用程序的Spring模型-视图-控制器(MVC)实现。
web -Struts模块包含支持类,用于将经典的Struts web层集成到Spring应用程序中。
D .杂项
AOP模块提供了面向方面的编程实现,允许您定义方法拦截器和点切割,以清晰地解耦实现应该分离的功能的代码。
Aspects模块提供了与AspectJ的集成,AspectJ也是一个强大而成熟的面向方面编程(AOP)框架。
Instrumentation模块提供在某些应用服务器中使用的类Instrumentation支持和类装入器实现。
Test模块支持使用JUnit或TestNG框架对Spring组件进行测试。
3.Spring IOC容器
Spring容器是Spring框架的核心。容器将创建对象,将它们连接在一起,配置它们,并管理它们从创建到销毁的整个生命周期。Spring容器使用依赖注入(DD)来管理组成应用程序的组件。这些对象被称为Spring bean,我们将在下一章讨论。
容器通过读取提供的配置元数据来获取关于对象实例化、配置和组装的指令。配置元数据可以用XML、Java注释或Java代码表示。下面的图表是Spring如何工作的一个高级视图。Spring loC容器利用Java POJO类和配置元数据生成一个完全配置的可执行系统或应用程序。
Spring提供了以下两种不同类型的容器:
A.Spring BeanFactory容器
这是为DI提供基本支持的最简单的容器。BeanFactory和相关的接口,如BeanFactoryAware、InitializingBean、DisposableBea,仍然存在于Spring中,目的是向后兼容与Spring集成的大量第三方框架。
B.Spring ApplicationContext容器
此容器添加了更多特定于企业的功能,例如解析属性文件中的文本消息的能力,以及向感兴趣的事件侦听器发布应用程序事件的能力。这个容器是由org springframework.context.ApplicationContextinter定义的。
ApplicationContext容器包括BeanFactory容器的所有功能,因此通常推荐它而不是BeanFactory。BeanFactory仍然可以用于轻量级应用程序,如移动设备或基于applet的应用程序,在这些应用程序中,数据量和速度都很重要
C.Beans
构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个被实例化、组装的对象。并由Spring Ioc容器管理。这些bean是用您提供给容器的配置元数据创建的,例如,以XML 定义的形式。
D.Spring配置元数据
Spring IoC容器与实际编写配置元数据的格式完全解耦。有以下三个重要的方法为SpringContainer提供配置元数据:
基于XML的配置文件
基于注解的配置
基于java的配置
4.DEPENDENCY注入(DI)
Spring最被认同的技术是控制的finversion中的依赖注入(DD)。控制反转(IoC)是一个一般的概念,它可以用很多不同的方式表达和依赖注入仅仅是控制反转的一个具体的例子在编写一个复杂的Java应用程序时,应用程序类应该尽可能独立其他Java类来重用这些类的可能性增加并在进行单元测试时独立于其他类对它们进行测试。依赖注入有助于将这些类粘在一起,同时保持它们的独立性。依赖注入到底是什么?让我们分别来看这两个单词。在这里,依赖关系部分转换为两个类之间的关联。例如,类A依赖于类b。现在,让我们看看第二部分,注入。所有这些意味着类B将被IoC注入到类A中。
依赖注入可以通过向构造函数传递参数的方式发生,也可以通过使用setter方法在构造后进行。假设您有一个具有文本编辑器组件的应用程序,并且希望提供拼写检查。你的标准代码看起来像这样:
public class TextEditor {
privateSpellCheckerspellChecker;
publicTextEditor() {
spellChecker = new SpellChecker();
}
}
我们在这里所做的是在TextEditor和SpellChecker之间创建一个依赖关系。在控制反转的场景中,我们会这样做:
public class TextEditor {
privateSpellCheckerspellChecker;
publicTextEditor(SpellCheckerspellChecker) {
this.spellChecker = spellChecker;
}
}
在这里,TextEditor不应该担心拼写检查器的实现。拼写检查将独立实现,并在TextEditor实例化时提供给TextEditor,整个过程由Spring框架控制。我们已经从TextEditor中删除了全部的控制,并将其保存在其他地方(例如。xml配置文件)和依赖(例如类SpellChecker)通过类构造函数注入到类TextEditor中。因此,控制流一直被依赖注入(DI)“倒置”,因为你有效地将依赖委托给一些外部系统。
注入依赖项的第二种方法是通过TextEditor类的Setter方法,我们将在其中创建SpellChecker实例,该实例将用于调用Setter方法来初始化TextEditor的属性。依赖注入有几个重要的好处。例如:
因为组件不需要在运行时查找协作者,所以编写和维护它们要简单得多。在Spring版本的IoC中,组件通过公开JavaBean setter方法或通过构造函数参数来表达对其他组件的依赖。EJB的等价物是JNDI查找,它要求开发人员编写做出环境假设的代码。
出于同样的原因,应用程序代码更容易测试。例如,JavaBean属性是简单的、核心的Java并且易于测试:只需编写一个自包含的JUnit测试方法来创建对象并设置相关属性。
一个好的IoC实现可以保持强类型。如果需要使用通用工厂查找协作者,则必须将结果转换为所需的类型。这不是一个大问题,但它与IoC不一致——在代码中表示强类型依赖关系,而框架负责类型转换。这意味着,当框架配置应用程序时,类型不匹配将作为错误出现;您不必担心代码中的类强制转换异常。
依赖关系是明确的。例如,如果一个应用程序类试图在实例化时加载一个属性文件或连接到一个数据库,那么在不阅读代码的情况下,环境假设可能并不明显(使测试复杂化并降低部署灵活性)。通过依赖项注入方法,依赖项是显式的。并且在构造函数或JavaBean属性中很明显。
大多数业务对象不依赖于IoC容器API。这使得遗留代码的使用变得很容易,并且易于在IoC容器内部或外部使用对象。例如,Spring用户经常将Jakarta Commons DBCP数据源配置为Spring bean:不需要编写任何自定义代码来实现这一点。我们说Ioc容器不是侵入性的:使用它不会侵入依赖于其API的代码。几乎任何POJO都可以成为Spring bean工厂的组件。现有的JavaBeans或(带有多参数构造函数的)对象工作得特别好,但Spring还为实例化静态工厂方法中的对象,甚至是loC容器管理的其他对象上的方法提供了独特的支持
5.面向方面编程(AOP)
Spring的关键组件之一是面向方面编程(AOP)框架。这些功能应用程序的多个点称为横切关注点,这些横切关注点在概念上与应用程序的业务逻辑分离。有各种常见的好例子,包括日志记录、声明性事务、安全性和缓存等。
在OOP中,模块化的关键单元是类,而在AOP中,模块化的单元是方面。DI帮助您将应用程序对象彼此分离,而AOp帮助您将横切关注点与它们影响的对象分离。Spring Framework的AOp模块提供了面向方面的编程实现,允许您定义方法拦截器和切入点,以清晰地解耦实现应分离功能的代码。Spring AOp模块提供拦截器来拦截应用程序,例如,当执行一个方法时,您可以在方法执行之前或之后添加额外的功能。
A.AOP概念
方面:跨多个类的关注点的模块化。事务管理是J2EE应用程序中横切关注点的一个很好的例子。在Spring AOP中,方面使用常规类(基于模式的方法)或用@Aspect注释(@AspectJstyle)注释的常规类来实现。
连接点:程序执行过程中的一个点,如方法的执行或异常的处理。在Spring AOP中,连接点总是表示方法执行。
建议:方面在特定连接点采取的
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[603369],资料为PDF文档或Word文档,PDF文档可免费转换为Word
您可能感兴趣的文章
- 饮用水微生物群:一个全面的时空研究,以监测巴黎供水系统的水质外文翻译资料
- 步进电机控制和摩擦模型对复杂机械系统精确定位的影响外文翻译资料
- 具有温湿度控制的开式阴极PEM燃料电池性能的提升外文翻译资料
- 警报定时系统对驾驶员行为的影响:调查驾驶员信任的差异以及根据警报定时对警报的响应外文翻译资料
- 门禁系统的零知识认证解决方案外文翻译资料
- 车辆废气及室外环境中悬浮微粒中有机磷的含量—-个案研究外文翻译资料
- ZigBee协议对城市风力涡轮机的无线监控: 支持应用软件和传感器模块外文翻译资料
- ZigBee系统在医疗保健中提供位置信息和传感器数据传输的方案外文翻译资料
- 基于PLC的模糊控制器在污水处理系统中的应用外文翻译资料
- 光伏并联最大功率点跟踪系统独立应用程序外文翻译资料
