初入spring源码--整体框架

来源:互联网 发布:禁止网络共享 编辑:程序博客网 时间:2024/06/15 17:06

         早就想学习spring源码了,现在终于有机会和大家一起成长了。       

         spring是2003年开始兴起的开源型框架(所以才能对spring源码进行解析)为了解决企业开发中复杂性而创建,基本上使用JavaBean来完成以前EJB完成的事,其用途不限于服务器开发,还对其他应用的可测试性、耦合度、简单性有着影响。

                                                       图一  spring整体框架图(官方图片)

一、此图将spring分成5大模块(参考《spring源码深度解析》):

  1.Data Access/integration模块

  此模块包含了jdbc、orm、oxm、jms、transaction几个小模块,其中:

   jdbc模块提供了一个jdbc的抽象层,它解决冗长的jdbc编码,对jdbc数据访问的所有类封装在这,同时解析了数据库厂商的错误代码;

  orm模块为对象和关系的映射的api提供互交层(如hinernate、mybatis等);spring框架插入若干个orm框架,从而提供orm的对象关系工具,其中有jdc,hibernate等,所有这些都遵从spring的通用事务和dao层异常层次结构

  oxm模块提供了一个object/xml映射实现的抽象层,object/xml映射实现包括Jaxb、Castor、XMLBean、JiBx和XStream.

  JMS模块主要包含一些制造和消费的特性。

  Transaction模块支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的pojo都适用

 2.web 

   web模块是建立在spring上下文的基础之上的(配置文件),为基于web的应用程序提供了上下文,因此spring支持对struts的整合。此外web模块简化了处理多部分请求和请求参数绑定到域对象的工作。web包含了web、web--servlet、web--struts和web--porlet,简单介绍这几个模块:

  web:提供了基础的web集成特性;

  web--servlet:该模块包含了spring的model-view-controller的实现;

  web--struts:该模块提供了对struts的支持,因此spring支持对struts的整合;

  web--portlet:提供了portlet环境和web--servlet模块的mvc的实现;

 3.aop

    aop模块提供了一个符合aop联盟联盟的面向方面编程(spring的核心之一,以后解释aop原理)的实现,通过配置管理特性,spring AOP模块直接将面向方面的编程集成到spring中所以可以很容易的使用spring框架管理的任何对象支持aop。spring aop模块为基于spring的应用程序中的对象提供了事务管理服务。通过使用springAOP,不用依赖EJB组件,就将声明性事务管理集成到应用程序中。

   aspects模块提供了对aspectj的集成支持;

   instrumentation模块提供了class instrumentation 支持和classloader实现,使得可以在特定4应用服务上使用。

4. core container

   核心容器模块包含core、bean、context和expression language模块。

   core和beans模块是框架的基础部分,提供ioc(控制反转spring核心之一以后解释)和依赖注入特性。这里的基础概念是BeanFactory,他提供对工厂模式的经典实现来消除对程序性单例模式的需求,并真正地允许从逻辑中的分离出依赖关系的配置。

  core模块主要包含spring框架基本的核心工具类,spring的其他组件要都要使用到这个包里的类,core模块是其他的组件的基本核心。也可以在自己的应用系统中使用这些工具类。

beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行ioc/di 操作相关的所有类。

context模块构建于core和beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法,它继承了beans的特性,为spring核心提供了大量的扩展,同时它也支持J2EE的一些特性

  expression language 模块提供了一个强大的表达式语言用于在运行时和操作对象;

5.test

   test模块支持使用JUnit和TestNG对spring组件进行测试。


                                                                                   图二

二、此图将spring分成7大模块(参考原文:http://www.ibm.com/developerworks/cn/java/wa-spring1/)

   核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转    (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 
   Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国   际化、校验和调度功能。 
   Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理  的任何对象支持 AOP。        Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 
  Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地 降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 
   Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务  和 DAO 异常层次结构。 
   Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。 


   

0 0
原创粉丝点击