1.Spring的各个子项目

  • Spring Framework(Core):这是我们熟知的Spring项目的核心。Spring Framework(Core)中包含了一系列Ioc容器的设计,提供了依赖反转模式的实现;同时,还集成了AOP功能;另外,在Spring Framework(Core)中,还包含了其他Spring的基本模块,比如MVC、JDBC、事务处理模块的实现。
  • Spring Web Flow:原先的Spring Web Flow是一个建立在Spring MVC基础上的Web工作流引擎。随着其自身项目的发展,Web Flow比原来更丰富,Spring Web Flow定义了一种特定的语言来描述工作流,同时高级的工作流控制器引擎可以管理会话状态,支持AJAX来构建丰富的客户端体验,并且提供对JSF的支持。Spring Web Flow 实际上是构建在Spring MVC基础之上的四相对于Spring Framework(Core)独立发展的。
  • Spring BlazeDS Integration:这是一个提供Spring与Adobe Flex技术集成的模块
  • Spring Security:是广泛使用的基于Spring的认证与安全工具,其目标是为Spring应用提供一个安全服务,比如用户认证、授权等。
  • Spring Security OAuth:这个项目为OAuth在Spring上的集成提供支持。OAuth是一个第三方的模块,提供一个开放的协议的实现,通过这个协议,前端桌面应用可以对Web应用进行简单而标准的安全调用。
  • Spring Dynamic Modules:可以让Spring应用运行在OSGI的平台上。我们知道,通过使用OSGi平台,增加了应用在部署和应用时的灵活性,Eclipse就是构建在OSGi的平台上,通过这个项目,可以再OSGi平台上方便地运行Spring应用。
  • Spring Batch:提供构建批处理应用和自动化操作的框架,这些应用的特点是不需要与用户交互,重复的操作量大,对于大容量的批处理而言,这些操作往往要求较高的可靠性。
  • Spring Integration:体现了“企业集成模式”的具体实现,并为企业的数据集成提供解决方案。Spring Integration为企业数据集成提供了各种适配器,通过这些适配器来转换各种消息格式,并帮助Spring应用完成与企业应用系统的集成。
  • Spring AMQP:是为Spring应用更好的使用基于AMQP(高级消息队列协议)的消息服务儿开发的,是在Spring应用长使用AMQP消息服务器变得更为简单。这个项目支持Java和.net两个版本。SpringSource旗下的RabbitMQ就是一个开源的基于AMQP的消息服务器,Rabbit MQ是用Erlang语言开发出来的。
  • Spring .net
  • Spring Android
  • Spring Mobile
  • Spring Social:是Spring框架的扩展,可以帮助Spring应用更方便的使用SNS
  • Spring Data:该项目为Spring应用提供使用关系型数据的能力,比如,当基础数据并非存储在关系型数据库中是,有如Map-Reduce中的分布式存储、云计算存储环境等。Spring应用可以考虑使用Spring Data来操作这种类型的数据。

2.Spring的设计目标

Spring为开发者提供的是一个一站式的轻量级应用开发框架(平台)。

3.Spring的整体架构

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

  • Spring IoC: 包含了最为基本的Ioc容器BeanFactory的接口与实现,在这个Spring核心包中,不仅定义了Ioc容器的最基本接口(BeanFactory),也提供了一系列的这个接口的实现,如XmlBeanFactory就是最基本的BeanFactory(IoC容器),从名字可以看到,它能够支持通过XML文件配置的Bean定义信息。除此之外,Spring IoC容器还提供了一个容器系列,如SimpleJndiBeanFactory、StaticListableBeanFactory等。另外,在BeanFactory接口的实现中,除了像BeanFactory这样的最为基本的容器形态之外,Spring还设计了IoC容器的高级形态ApplicationContext应用上下文供用户使用,如FileSystemXmlApplicationContext、ClassPathXmlApplicationContext,对应用来说,是Ioc容器中更面向框架的使用方式,同样为了便于开发,向国际化的消息源和应用支持事件这些特性,也都在这个模块中配合IoC容器来实现,这些功能围绕着IoC基本容器和应用上下文的实现,构成了整个Spring Ioc模块设计的主要内容。
  • Spring AOP: 这也是Spring的核心模块,围绕着AOP的增强功能,Spring集成了AspectJ作为AOP的一个特定实现,同时还在JVM动态代理/CGLIB的基础之上,实现了一个AOP框架,作为Spring集成其他模块的工具,比如TransactionProxyFactoryBean声明式事务处理,就是通过AOP集成到Spring中的。在这个模块中,Spring AOP实现了一个完整的建立AOP代理对象,实现AOP拦截器,直至实现各种Advice通知的过程。
  • Spring MVC :对于大多数企业应用而言,Web应用已经是一种普遍的软件发布方式,而在Web应用的设计中,MVC模式已经被广泛应用。Spring MVC模块以DispatcherServlet为核心,实现了MVC模式,包括怎样与Web容器环境的集成,Web请求的拦截、分发、处理和ModelAndView数据的返回,以及如何集成各种UI视图的展现和数据表现,如PDF、Excel等。
  • Spring JDBC/Spring ORM:在企业应用里,对以关系数据库为基础的数据的处理是企业应用的一个重要的方面,而对于关系数据库的处理,Java提供了JDBC来进行操作,而Spring对JDBC做了一层封装,使通过JDBC完成的对数据库的操作更加简洁。Spring JDBC包提供了JdbcTemplate作为模板类,封装了基本的数据库操作方法,如数据的查询、更新等;另外,SpringJDBC还提供了RDBMS的操作对象,这些操作可以使应用以更面向对象的方法来使用JDBC,比如可以使用MappingSqlQuery将数据库数据记录直接映射到对象集合,类似一个极为简单的ORM工具。除此之外,Spring还提供了许多对ORM工具的封装,如Hibernate、iBatis等,这一层封装的作用是让应用更方便地使用这些ORM工具。
  • Spring事务处理:Spring事务处理是一个通过Spring AOP实现自身功能增强的典型模块。在这个模块中,Spring把在企业引用开发中事务处理的主要过程抽象出来,并且简洁的通过AOP的切面增强实现了声明式事务处理的功能。这个声明式事务处理的实现,使应用只需要在IoC容器中对事务属性进行配置即可完成,同时,这些事务处理的基本过程和具体的事务处理器实现是无关的,也就是说,应用可以选择不同的具体的事务处理机制,如JTA、JDBC、Hibernate等。因为使用了声明式事务处理,这些具体的事务处理机制被纳入Spring事务处理的统一框架中完成,并完成与具体业务大妈的解耦。在这个模块中,可以看到一个通用的实现声明式事务处理的基本过程,比如怎样配置事务处理的拦截器,怎样读入事务配置属性,并结合这些事务配置属性对事务对象进行处理,包括事务的创建、挂起、提交、回滚等基本过程,还可以看到具体的事务处理器是怎样封装不同的事务处理机制的。
  • Spring 远端调用:Spring为应用带来的一个好处就是能够将应用解耦。应用解耦,一方面可以降低设计的复杂性,另一方面,可以在解耦以后将应用模块分布式的部署,从而提高系统整体的性能。在后一种应用场景下,会用到Spring的远端调用,这种远端调用是通过Spring的封装从Spring应用到Spring应用之间的端到端调用。

Spring的设计理念和整体架构的更多相关文章

  1. Spring技术内幕:设计理念和整体架构概述(转)

    程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...

  2. Spring学习(一)--Spring的设计与整体架构

    之前只是在学校里大概的学习了一下Spring框架的使用以及一些最基本.浅显的原理,并没有做出深入的学习,等到工作之后想提升自己的时候发现所掌握的Spring框架的简直烂如狗屎,为监督自己的学习进度,立 ...

  3. 001-Spring的设计理念和整体架构

    一.概述 1.1.Spring的各个子项目 网站:https://spring.io/ 基于Spring的项目:https://spring.io/projects 文档列表:https://spri ...

  4. 《Spring技术内幕》笔记-Spring的设计理念和总体架构

    1.Spring的主要子项目:     -1.Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能.     -2.Spring Web Flow ...

  5. spring源码学习——spring整体架构和设计理念

    Spring是在Rod Johnson的<Expert One-On-One J2EE Development and Design >的基础上衍生而来的.主要目的是通过使用基本的java ...

  6. Spring Framework(框架)整体架构 变迁

    Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架   版权声明:本文为博主 ...

  7. 【Spring源码深度解析系列 】Spring整体架构

    一.Spring的整体架构和模块 二.模块分类: 1.Core Container Core Container包含有Core .Beans.Context.和Expression  Language ...

  8. spring源码深度解析—Spring的整体架构和环境搭建

    概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框 ...

  9. Spring整体架构

    Spring整体架构 Spring的整体架构 Spring框架是分层架构的,它包含了一系列的功能要素. Spring整体架构图 模块分类 1. Core Container Core Containe ...

随机推荐

  1. ACM-数细胞

    题目描述:数细胞 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.编程需要用到的队列及其相关函数已经实现,你只需要完成 ...

  2. springboot项目 线程消费队列注入报错误空指针

    背景: 在调用阿里云隐私保护有一个通话记录的回执消息是一个消费线程队列,这个还别人告诉我的,因为我根本没有看出来哪里是个线程了,然后我就把它当成普通的代码拿到返回值以后然后插入数据库 可是我这边该加的 ...

  3. python爬取网页文本、图片

    从网页爬取文本信息: eg:从http://computer.swu.edu.cn/s/computer/kxyj2xsky/中爬取讲座信息(讲座时间和讲座名称) 注:如果要爬取的内容是多页的话,网址 ...

  4. javascript实现抽奖程序

    昨天开年会的时候看到一个段子说唯品会年会抽奖,结果大奖都被写抽奖程序的部门得了,CTO现场review代码. 简单想了一下抽奖程序的实现,花了十几分钟写了一下,主要用到的知识有数组添加删除,以及ES5 ...

  5. python刷LeetCode:21. 合并两个有序链表

    难度等级:简单 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1 ...

  6. python脚本下载 Google Driver 文件

    使用python脚本下载 Google Driver 文件 import yaml import sys import requests import os import re import tarf ...

  7. Linux-课后练习(第二章命令)20200217-1

  8. VUE.js入门学习(5)- 插槽和作用域插槽

    插槽: (1)用法 以前的写法:如果内容很多的话,就很烂了- 插槽写法:(PS:组建名不能用保留关键字) (2)具名插槽 (3)作用域插槽 必须template开始和结尾,这个插槽要声明我从子组建接收 ...

  9. 使用 this 关键字定义方法和属性

    1.方法和属性的定义 属性是类中声明的变量,与其他地方变量的声明基本相同,只是属性必须 this 关键字,并且这里没有var 关键字. this.age; 在使用时,先是 this 关键字,之后的点语 ...

  10. 基于百度语音识别API的Python语音识别小程序

    一.功能概述 实现语音为文字,可以扩展到多种场景进行工作,这里只实现其基本的语言接收及转换功能. 在语言录入时,根据语言内容的多少与停顿时间,自动截取音频进行转换. 工作示例: 二.软件环境 操作系统 ...