您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Spring框架应用解析
Spring框架应用主要内容–Spring框架基本知识–Spring框架开发准备–Spring框架开发实例1.1Spring基本知识–Spring是Java平台上一个开源应用框架,它有着深厚的历史根基。Spring最初起源于RodJohnson于2002年所著的《ExpertOne-on-One:J2EEDesignandDevelopment》一书中的基础性代码。在该书中,RodJohnson阐述了大量Spring框架的设计思想,并对J2EE平台进行了深层次的思考,指出了EJB存在的结构臃肿的问题。他认为采用一种轻量级的、基于JavaBean的框架就可以满足大多数程序开发的需要。–2003年,RodJohnson公开了所描述框架的源代码,这个框架逐渐演变成了我们所熟知的Spring框架。2004年3月发布的1.0版本是Spring的第一个具有里程碑意义的版本。这个版本发布之后,Spring框架在Java社区中变得异常流行。现在,Spring已经获得了广泛的欢迎,并被许多公司认为是具有战略意义的重要框架。1.1.1Spring的基本概念–Spring框架是基于Java平台的,它为应用程序的开发提供了全面的基础设施支持。Spring专注于基础设施,这将使得开发者能更好的致力于应用开发而不用去关心底层的架构。–Spring框架本身并未强制使用任何特别的编程模式。从设计上看,Spring框架给予了Java程序员许多自由度,但同时对业界存在的一些常见问题也提供了规范的文档和易于使用的方法。–Spring框架的核心功能适用于任何Java应用。在基于Java企业平台上的大量Web应用中,积极的拓展和改进已经形成。而Spring的用途也不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度来说,任何Java应用都可以从Spring中获得好处。1.1.1Spring的基本概念•1.Spring框架优势–Spring框架能有效地组织中间层对象。–Spring框架实现了真正意义上的面向接口编程,可实现组件之间的高度解耦。–Spring所秉承的设计思想就是让使用Spring创建的那些应用都尽可能少的依赖于它的APIs。–使用Spring构建的应用程序易于进行单元测试。–Spring提高了代码的可重用性,它尽可能避免在程序中硬编码。–Spring为数据存取提供了一个一致的框架,简化了底层数据库的访问方式。1.1.1Spring的基本概念•2.依赖注入(DI)和控制反转(IOC)–依赖注入(DependencyInjection)和控制反转(InversionofControl)实际上是同一个概念。–在传统的程序设计中,通常由调用者来创建被调用者的实例,而在依赖注入或控制反转的定义中,调用者不负责被调用者的实例创建工作,该工作由Spring框架中的容器来负责,它通过开发者的配置来判断实例的类型,创建后再注入调用者。由于Spring容器负责创建被调用者实例,实例创建后又负责将该实例注入调用者,因此称为依赖注入(DependencyInjection);而被调用者的实例创建工作不再由调用者来创建而是由Spring来创建,因此称为控制反转(InversionofControl)。1.1.1Spring的基本概念•3.面向切面编程(AOP)–AOP(Aspect-OrientedProgramming),也就是面向切面编程,它是面向对象编程(OOP)的补充和完善。–在OOP中通过封装、继承和多态性等概念建立起了多个对象之间的层次结构,但当需要为这些分散的对象加入一些公共行为时,OOP就显得力不从心了。换句话说就是,OOP擅长的是定义从上到下的关系,但是并不适合定义从左到右的关系。–AOP的出现恰好解决了OOP技术的这种局限性。AOP利用了一种称为“横切”的技术,将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect)。切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。1.1.1Spring的基本概念•4.日志在Spring中,日志主要用来监控代码中变量的变化,跟踪代码运行的轨迹,在开发环境中担当调试器,向控制台或文件输出信息。在Spring框架中,日志记录是必不可少的,如果没有对应的依赖包,会产生错误。1.1.2Spring框架模块Spring框架遵从模块的架构方式,由总共20多个模块组成,包括核心容器﹑数据访问/集成﹑Web﹑AOP等。这些模块为我们提供了开发企业级应用所需要的一切东西。在开发过程中,这些模块并不都是必须的,可以针对具体的应用自由选择所需要的模块。还可以将Spring与其他框架或库进行集成,使得开发过程更有针对性更有效率。1.2Spring开发准备1.2.1下载Spring开发包–目前Spring框架的开发包的最新稳定版是3.1.1,本书就采用该版本来介绍Spring框架。开发包“spring-framework-3.1.1.RELEASE.zip”可到Spring官方网站上下载。1.2.2下载commons-logging包•登录站点可下载commons-logging的压缩包“commons-logging-1.1.1-bin.zip”。1.2.3Spring框架配置在下载完Spring框架开发所需要的开发包后,将其解压缩。打开Spring开发包解压缩目录,可以看到下图所示目录。1.2.3Spring框架配置•将commons-logging压缩包解压缩,打开其解压缩目录,可以看到下图所示目录。1.3Spring开发实例1.3.1开发实例【例15-1】下面通过该实例来介绍Spring框架程序的一般构建方式。1.3.2Spring的IoC容器–Spring的IoC容器是一个提供IoC支持的轻量级容器,IoC容器为管理对象之间的依赖关系提供了基础功能。Spring为我们提供了两种容器:BeanFactory和ApplicationContext。–BeanFactory由org.springframework.beans.factory.BeanFactory接口定义,是基础类型的IoC容器,并能提供完整的IoC服务支持。IoC容器需要为其具体的实现提供基本的功能规范,而BeanFactory接口则提供了该功能规范的设计,每个具体的SpringIoC容器都要满足BeanFactory接口的定义。–ApplicationContext由org.springframework.context.ApplicationContext接口定义,是以BeanFactory为基础构建的。–此外,Spring还提供了BeanFactory和ApplicationContext的几种实现类,它们也都称为Spring的容器。1.3.2Spring的IoC容器–1.BeanFactory及其工作原理–BeanFactory在Spring中的作用至关重要,它实际上是一个用于配置和管理Java类的内部接口,负责初始化各种Bean并调用它们的生命周期方法。–Spring中提供了几种BeanFactory的实现方法,最常使用的是org.springframework.beans.factory.xml.XmlBeanFactory,它会根据XML配置文件中的定义来装配Bean。–创建BeanFactory实例时,需要提供Spring容器所管理的Bean的详细配置信息。Spring的配置信息通常采用XML文件的形式来管理,所以,在创建BeanFactory实例时,需要依据XML配置文件中提供的信息。1.3.2Spring的IoC容器2.BeanFactory接口包含如下的基本方法–BooleancontainsBean(Stringname):判断Spring容器是否包含id为name的bean定义。–ObjectgetBean(Stringname):返回容器中id为name的bean。–ObjectgetBean(Stringname,ClassrequiredType):返回容器中id为name,并且类型为requiredType的bean。–ClassgetType(Stringname):返回容器中id为name的bean的类型。小结–本章主要介绍了Spring框架的基本知识,包括控制反转和依赖注入,Spring框架的核心模块,以及Spring框架的配置等内容,并通过SpringDemo实例使读者对使用Spring框架进行编程有了一个初步的了解。2.Spring之IoC原理与具体使用–在实例项目中使用Spring–SpringIoC原理简介–SpringIoC简单模拟实现2.1在实例项目中使用Spring–【例16-1】在这个例子中,创建一个HelloWorld类,用Spring来实现在控制台上打印出“HelloWorld!”语句的功能。2.2深入理解依赖注入2.2.1依赖注入–依赖注入(DependencyInjection,DI)也被称为控制反转(InversionofControl,IoC)。早在2004年,MartinFowler就在论文《InversionofControlContainersandtheDependencyInjectionpattern》中提出问题:“哪些方面的控制被反转了?”。根据他的观点——是依赖对象的获得被反转了。于是他为控制反转创造了一个更好的名字:依赖注入。–由此我们知道,依赖注入和控制反转的含义完全相同,只是从两个角度来描述了同一个概念。对于一个Spring初学者来说,这两种说法同样生涩难懂,因此,我们尝试用更加简单通用的语言和例子来描述出这个概念。2.2.1依赖注入–当某个Java实例(调用者)需要另一个Java实例(被调用者)时,调用者自身需要负责实现这个获取过程——由程序内部代码来控制对象之间的关系。我们已经熟悉的方式是调用者采用“new构造方法”的形式来创建被调用者以实现两个或多个对象的组合,但是这种实现方式不仅会导致代码的耦合度高而且难于测试。一个好的设计,不但要求代码尽可能多的实现复用,还要求组件之间尽量解耦。而依赖注入的出现完美的解决了代码的高耦合度问题。2.2.1依赖注入–用一句话概括依赖注入就是“不要来找我,我会去找你”,也就是说,一个类不需要去查找或实例化它们所依赖的类。对象间的依赖关系是在对象创建时由负责协调项目中各个对象的外部容器来提供并管理的。也就是强调了对象间的某种依赖关系是由容器在运行期间注入调用者的,控制程序间关系的实现交给了外部的容器来完成。这样,当调用者需要被调用者对象时,调用者不需要知道具体实现细节,它只需要从容器中拿出一个对象并使用就可以了。2.2.1依赖注入调用者汽车被调用者new图2.3调用者构造汽车对象调用者汽车被调用者通过Spring容器注入调用者Spring容器图2.4将汽车对象注入调用者对象2.2.2依赖注入的3种实现方式•依赖注入存在着三种实现方式,分别是设值注入、构造方法注入和接口注入。1.设值注入设值注入是指IoC容器使用setter方法来注入被依赖的实例。通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean的setter方法,即可实现基于setter的DI。2.2.2依赖注入的3种实现方式•2.构造方法注入•构造方法注入是指IoC容器使用构造方法来注入被依赖的实例。基于构造器的DI通过调用带参数的构造器来实现,每个参数代表着一个依赖。2.2.2依赖注入的3种实现方式3.接口注入接口注入需要类实现特定的接口或继承特定的类。但是这样一来,类就必须依赖于这些特定的接口或特定的类,这也就意味着侵入性。因此这种注入方式基本上已经被遗弃了。2.3S
本文标题:Spring框架应用解析
链接地址:https://www.777doc.com/doc-6418562 .html