Spring的设计理念和整体架构

懵懂的女人 提交于 2020-03-02 01:23:53

1.为什么要学习spring?

     1.1设计理念和目标

        首先要了解spring的设计理念和目标,可以这么说,spring为开发者提供的是一个一站式的轻量级应用开发框架(平台),作为平台,spring抽象了我们

        在许多应用开发中遇到的共性问题,同时,作为一个轻量级的应用开发框架,spring和传统的J2EE开发相比,有其自身的特点,通过这些自身的特点

          充分体现了它的设计理念:在java EE的应用开发中,支持POJO和使用JavaBean的开发方式,使应用面向接口开发,充分支持OO(面向对象)的设计方              式

 

      比如,在java EE应用开发中,传统的EJB开发需要依赖按照J2EE规范实现的J2EE应用服务器,我们的应用在设计,特别是实现时,往往需要一系列的接口标        准 才能够在应用服务器的环境中得到测试和部署,这种开发方式,使应用在可测试性和部署上都会受到一些影响,spring的设计理念采用了相对EJB而言的          轻量级开发思想,即使用POJO的开发方式,只需要使用简单的java对象或者JavaBean就能进行Java EE开发,这样开发入门,测试,应用部署都得到了简化

 

     另一方面,在我们的应用开发中,往往会涉及复杂的对象耦合关系,如果在java代码中处理这些耦合关系,对代码的维护性和应用扩展性会带来很多不便

    而如果使用spring作为应用开发平台,通过使用spring的IOC容器,可以对这些耦合关系实现一个文本化,外部化的工作,也就是说,通过一个或几个XML

    文件,就可以方便地对应用对象的耦合关系进行浏览,修改和维护,这样,可以很大程度简化应用开发,同时,通过IOC容器的依赖反转,把依赖关系的管理

     从java对象中解放出来,交给了IOC容器来完成,从何完成了对象直接的关系解耦,原来对象——对象的关系,转化为对象——IOC容器——对象的关系

 

       作为应用平台,spring与UNIX/WINDOWS这样传统意义的操作系统在计算机的作用类似,即作为用户和机器之间的平台,同时为用户使用底层的机器资源提         供了应用开发环境,,不同点在于,操作系统关心得是对存储,计算,通信,外围设备等物理资源的管理,并在管理的基础之上,给用户提供了一个统一的          服务接口,而对于spring这样的javaEE企业应用开发,其关心的是一些企业应用资源的使用,比如数据的持久化 ,数据集成,事务处理,消息中间件,web           应用,分布式计算等对高校可靠处理企业数据方法的技术抽象,虽然开发模式不同,但出发点是一样的

         从理解应用开发和应用平台两者的关系角度出发,可以换一种视角体会spring的设计理念,在设计上把spring划分为核心,组件和应用3个基本层次

1.2层次划分与核心部分

在这样的层次划分中,首先会看到,spring体系的核心,类似操作系统的Kernel(核心),即IOC容器和AOP模块,那么对于操作系统的Kernel来说,进程调度器的设计是其关键部分,通过进程调度器,一方面使用“进程”这个概念来抽象物理的计算资源,另一方面,可以通过调度算法的设计来实现对计算资源的高效使用。对spring来说,一方面,通过IOC容器来管理POJO对象,以及他们相互之间的耦合关系,使企业的数据资源可以通过简单的java语音来抽象和描述,另一方面,可以通过AOP,以动态和非侵入式的方式来增强功能,作为核心,我们可以把IOC容器和AOP模块看做spring的Kernel ,是平台实现的核心部分

    1.3spring的体系 

        另外,在spring的体系中,我们还会看到,在IOC容器和AOP这两个核心模块的支持下,spring简化了Java EE所进行的开发,这种简化指,我们能够不再          EJB 这么厚重的环境中,使用javaEE 的基本服务,为应用开发提供了许多即开即用的系统组件和服务,这些服务涵盖了javaEE的各个基本服务,对于其他的服      务  也可以动态的扩展到spring体系中(只要依据IOC和AOP所约定好的特定模式),在spring体系中可以包括我们很多经常用到的服务,比如事务处理,WEB      MVC,JDBC,ORM,远端调用,从对用户的价值,这些服务相对来说是不可忽视的

2 了解spring的整体架构

    2.1spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块。

    

这些模块被总结为以下几个部分。

(1)Core Container

       Core Container(核心容器)包含有Core、Beans、Context和Expression Language模块。

       Core和Beans模块是框架的基础部分,提供IOC(控制反转)和依赖注入特性。这里的基础概念是BeanFactory,它提供了Factory模式的经典实现来消除对程         序性单例模式的需要,并真正的允许你从程序逻辑中分离出依赖关系和配置。

       Core模块主要包含spring框架基本的核心工具类,spring的其他组件都要使用到这个包里的类,core模块是其他组件的基本核心。当然你也可以在自己的应          用系统中使用这些工具类,Beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control/ Dependency Injection操作相关的所有类。

      Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块继承了Beans的特性,为了spring核心   提供了大量扩展,添加了对国际化、时间传播、资源加载个对Context的透明创建的支持。ApplicationContext接口是Context模块的关键。

      Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算术运算符以及从spring的IOC容器中根据名称检索对象。

(2) Data Access(数据访问)/Integration(集成)

          Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。

         JDBC模块提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。这个模块包含了spring对JDBC数据访问进行封装的所有类。

         ORM:利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射。

    OXM:提供了一个对Object/XMl映射实现的抽象层。

         JMS:提供了一些制造和消费消息的特性。

        Transaction:支持编程和生命性的事务管理,这些事务类必须实现特定的接口,并且对所有的POJO都适用

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!