深入理解Spring框架(一)

时间:2022-02-20 21:57:05

Spring设计理念与整体架构

    1、Spring是一个非入侵性框架,其目标是使应用程序代码对框架的以来最小化,应用代码可以在没有
Spring或者其他容器的情况下使用。
2、Spring提供一个一致的编程模型,使应用直接使用POJO((Plain Ordinary Java Object)简单的Java对象),
从而可以与运行环境隔离开。
3、Spring推动应用的设计风格向面向对象及面向接口编程转变,提高代码的重用性和可测试性。
4、改进体系结构的选择,帮助开发者选择不同的技术实现。比如从Hibernate切换到其他ORM工具,
从Struts切换到Spring MVC。降低平台锁定的风险。

spring各个子项目

    Spring开源社区:http://www.springsource.org,围绕Spring核心构建的一个丰富的平台生态系统。通过这些子项目更
深入了解Spring的设计架构和实现原理。
  • Spring Framework(Core):
    Spring 项目的核心,包含了一系列的IOC容器的设计,提供依赖反转模式的实现。同时集成了AOP功能,还包含MVC、JDBC、事务处理等模块的实现
  • Spring Web Flow:
    原是建立在Spring MVC基础上的Web工作流引擎。定义了一种特定的语言描述工作流,同时高级的工作流控制器引擎可以管理会话状态,支持AJAX来创建丰富的客户体验,并且提供JSF[^footnote]:(JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。)的支持。 Spring Web Flow架构图如下图:
    深入理解Spring框架(一)
  • Spring BlazeDS Integration:
    提供Spring 与Adobe Flex 技术集成的模块。
    BlazeDS模块实现了Flex前端展现和服务器后端处理的通信机制。在这个实现基础上,Spring BlazeDS Integration进行了进一步的封装,让模块使用更像是由Spring ToC容器管理的Bean。
  • Spring Security:
    广泛使用的基于Spring的认证和安全工具,就是先前在Spring社区中盛名的Acegi框架,为Spring提供比如用户认证、授权等的安全服务。
  • Spring Security OAuth:
    OAuth是点三方模块,通过提供一个开放协议,前端桌面可以对Web应用进行简单而标准的安全调用
  • Spring Dynamic Modules
    可以让Spring运行在OSGI的平台。Eclipse就是构建在OSGI的平台上,通过这个项目可以在OSGI平台上方便运行Spring应用。
  • Spring Batch:
    提供构建应用和自动化操作的框架。
  • Spring Integration:
    为企业数据集成提供各种适配器,以此来转换各种消息格式,帮助Spring应用完成与企业应用系统的集成。
  • Spring AMQP:
    为Spring应用更好使用AMQP(高级消息队列协议)的消息服务
  • Spring .NET:
    在.NET环境中使用Spring。.NET开发人员通过它在.NET项目中使用Spring 的IoC容器、AOP特性等。
  • Spring Andriod:
    为Andriod终端开发应用提供Spring支持,提供一个在Andriod应用环境中工作,基于Java的REST客户端。
  • Spring Mobile:
    不同于Spring Andriod,基于Spring MVC构建的,为移动终端的服务器应用开发提供支持。
  • Spring Social:
    Spring框架的扩展。帮助Spring应用更方便的使用SNS(Social Network Service)
  • Spring Data:
    为Spring提供使用非关系型数据的能力。

Spring整体架构

Spring 架构图如下:
深入理解Spring框架(一)

在这个架构图中,可以看到一下的Spring基本组成模块:

  • Spring IoC:

        包含最基本的IOC容器BeanFactory的接口与实现。如XmlBeanFactory就是一个最基本
    的BeanFactory(IoC容器)。还支持报告Resource访问资源的抽象和定位等。还提供IoC容器的高级形
    器实现,围绕IoC基本容器和应用上下文实现,构成整个Spring IoC模块设计的主要内容。
  • Spring AOP:

        Spring核心模块,TransactionProxyFactoryBean声明式事务处理,就是通过AOP集成到Spring中。
    在这个模块中,AOP实现了一个完整的建立AOP代理对象,实现拦截器,直至实现各种各种Advice通知的过程。
  • Spring MVC:

        以DispatcherServlet为核心,实现MVC模式,包括怎样与web容器环境的集成,web请求拦截、分发、
    处理和ModelAndView数据的返回,以及如何集成各种UI试图展现和数据表现,完成web的前端设计。
  • Spring JDBC/Spring ORM:

  • Spring 事务处理:

        是一个通过AOP实现自身功能增强的典型模块。这些事务处理的基本过程与具体的事务处理器是实现是无关的,
    即可以选择不同的具体的事务处理机制。应为使用了声明式事务处理,这些具体的事务处理机制被纳入
    Spring事务处理的同意框架在完成,并完成与具体业务代码的解耦。
  • Spring 远端调用:

        Spring为应用带来的一个好处是将应用解耦。应用解耦,一方面降低设计复杂性,另一方面可以在解耦以后将
    应用模块分布式地部署,以提高系统整体的性能。在后一种情况下,会使用到Spring的远端调用,是通过Spring
    的封装从应用到应用之间的端到端调用。在这个过程中,通过Spring的封装,为应用屏蔽了各种通信和
    调用细节的实现,同时使应用可以通过各种选择不同的远端调用实现。
  • Spring 应用:

    Spring子项目