【第1章 Spring概述与结构】1.2 Spring模块与结构

上一节:【第1章 Spring概述与结构】1.1 Spring起源与概述 ##Spring功能##数据库

  1. 基于Java Beans的配置管理,采用IOC的原理,特别是对依赖注入技术的使用。这些都用来减小各组件间对实施细则的相互依赖性。
  2. 一个核心的,全局适用的Bean工厂。
  3. 一个通常抽象化的层面来管理数据库间的数据处理。
  4. 创建在框架内的,对Java数据处理API和单独的JDBC数据源的通常性策略。所以,在数据处理支持上对Java企业版本环境的依赖性得以消除。
  5. 和一些可持续性的框架,如Hibernate,JDO,MyBatis和db4o的整合。
  6. Web应用中的MVC框架,基于核心的Spring功能,支持多种产生视图的技术,包括JSP,FreeMarker,Velocity,Tiles,iText,和POI。
  7. 大量的AOP框架以提供诸如数据处理管理的服务。同IOC的功能同样,目的是提升系统的模块化程度

##Spring模块## Spring框架旨在分离体系结构的层次,由7个定义良好的模块组成,所以每一层均可以修改而不会影响到其它层。每一层都不知道其上层的关注点;就其可能而言,只对所紧挨的下一层有依赖。层与层之间的依赖一般是以接口的形式表现,以确保其耦合尽量松散。Spring模块构建在核心容器之上,核心容器定义了建立、配置和管理Bean的方式。编程

输入图片说明

若是做为一个总体,这些模块为你提供了开发企业应用所需的一切。但你没必要将应用彻底基于Spring框架。你能够自由地挑选适合你的应用的模块而忽略其他的模块。安全

就像你所看到的,全部的Spring模块都是在核心容器之上构建的。容器定义了Bean是如何建立、配置和管理的——更多的Spring细节。当你配置你的应用时,你会潜在地使用这些类。可是做为一名开发者,你最可能对影响容器所提供的服务的其它模块感兴趣。这些模块将会为你提供用于构建应用服务的框架,例如AOP和持久性。服务器

以上组成Spring框架的每一个模块(或组件)均可以单独存在,或者与其余一个或多个模块联合实现。每一个模块的功能以下:app

  1. 核心容器:Spring框架最基础的部分,它提供了依赖注入(Dependency Injection)特征来实现容器对Bean的管理。这里最基本的概念是BeanFactory,它是任何Spring应用的核心。BeanFactory是工厂模式的一个实现,它使用IoC将应用配置和依赖说明从实际的应用代码中分离出来。
  2. Spring上下文:核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。这个模块扩展了BeanFactory的概念,增长了对国际化(I18N)消息、事件传播以及验证的支持。 另外,这个模块提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持。
  3. Spring AOP:Spring在它的AOP模块中提供了对面向切面编程的丰富支持。这个模块是在Spring应用中实现切面编程的基础。为了确保Spring与其它AOP框架的互用性, Spring的AOP支持基于AOP联盟定义的API。AOP联盟是一个开源项目,它的目标是经过定义一组共同的接口和组件来促进AOP的使用以及不一样的AOP实现之间的互用性。经过访问他们的站点http://aopalliance.sourceforge.net,你能够找到关于AOP联盟的更多内容。 Spring的AOP模块也将元数据编程引入了Spring。使用Spring的元数据支持,你能够为你的源代码增长注释,指示Spring在何处以及如何应用切面函数。
  4. Spring DAO:使用JDBC常常致使大量的重复代码,取得链接、建立语句、处理结果集,而后关闭链接。Spring的JDBC和DAO模块抽取了这些重复代码,所以你能够保持你的数据库访问代码干净简洁,而且能够防止因关闭数据库资源失败而引发的问题。 这个模块还在几种数据库服务器给出的错误消息之上创建了一个有意义的异常层。使你不用再试图破译神秘的私有的SQL错误消息! 另外,这个模块还使用了Spring的AOP模块为Spring应用中的对象提供了事务管理服务。
  5. Spring ORM:对那些更喜欢使用对象/关系映射工具而不是直接使用JDBC的人,Spring提供了ORM模块。Spring并不试图实现它本身的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射。Spring的事务管理支持这些ORM框架中的每个也包括JDBC。
  6. Spring Web:Web上下文模块创建于应用上下文模块之上,提供了一个适合于Web应用的上下文。另外,这个模块还提供了一些面向服务支持。例如:实现文件上传的multipart请求,它也提供了Spring和其它Web框架的集成,好比Struts、WebWork。
  7. Spring MVC:Spring为构建Web应用提供了一个功能全面的MVC框架。虽然Spring能够很容易地与其它MVC框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了彻底的分离。 它也容许你声明性地将请求参数绑定到你的业务对象中,此外,Spring的MVC框架还能够利用Spring的任何其它服务,例如国际化信息与验证。

Spring带来了复杂的J2EE开发的春天。它的核心是轻量级的IoC容器,它的目标是为J2EE应用提供了全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间能够彼此独立,也可使用其它的框架方案加以代替,Spring但愿为企业应用提供一站式(one-stop shop)的解决方案。 ##Spring特色## 容器管理事务,容器贯穿始终:(1)对象生命周期的管理;(2)容器自己具有功能,加在本身的类中。须要本身调用则为显示调用。而尽可能用容器隐式调用,Spring即为隐式调用、声明式编程。框架

Spring轻量级容器体如今:只需设置一个Jar文件到CLASSPATH,不用去调用它,但又能够拥有其强大的功能。组件的极大程度的复用。模块化

声明式编程:在xml文件中声明。基于POJO类,支持事务,事务是根本;而EJB事务由Container管理。函数

不重复造轮子:Spring将View层与持久层,好比与Hibernate联系起来。Spring简化Hibernate的使用,还能够帮助管理Hibernate。Spring自己没有O-R_mapping,由于有Hibernate,它已经作得很好了。工具

JDBC异常封装:Spring将编译时异常(checked)转化为运行时异常(runtime)。好比,JDBC 则为编译时异常,即必须写try…catch;而Hibernate程序为运行时异常。.net

总之,Spring是一个轻型容器(light-weight container),其核心是Bean工厂(Bean Factory),用以构造咱们所须要的M(Model)。在此基础之上,Spring提供了AOP(Aspect-Oriented Programming, 面向层面的编程)的实现,用它来提供非管理环境下声明方式的事务、安全等服务;对Bean工厂的扩展ApplicationContext更加方便咱们实现Java EE的应用;DAO/ORM的实现方便咱们进行数据库的开发;Web MVC和Spring Web提供了Java Web应用的框架或与其它流行的Web框架进行集成。

下一节:【第2章 Spring快速入门】2.1 Java应用之HelloWorld