Spring的设计理念和整体架构
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的设计理念和整体架构的更多相关文章
- Spring技术内幕:设计理念和整体架构概述(转)
程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...
- Spring学习(一)--Spring的设计与整体架构
之前只是在学校里大概的学习了一下Spring框架的使用以及一些最基本.浅显的原理,并没有做出深入的学习,等到工作之后想提升自己的时候发现所掌握的Spring框架的简直烂如狗屎,为监督自己的学习进度,立 ...
- 001-Spring的设计理念和整体架构
一.概述 1.1.Spring的各个子项目 网站:https://spring.io/ 基于Spring的项目:https://spring.io/projects 文档列表:https://spri ...
- 《Spring技术内幕》笔记-Spring的设计理念和总体架构
1.Spring的主要子项目: -1.Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. -2.Spring Web Flow ...
- spring源码学习——spring整体架构和设计理念
Spring是在Rod Johnson的<Expert One-On-One J2EE Development and Design >的基础上衍生而来的.主要目的是通过使用基本的java ...
- Spring Framework(框架)整体架构 变迁
Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架 版权声明:本文为博主 ...
- 【Spring源码深度解析系列 】Spring整体架构
一.Spring的整体架构和模块 二.模块分类: 1.Core Container Core Container包含有Core .Beans.Context.和Expression Language ...
- spring源码深度解析—Spring的整体架构和环境搭建
概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框 ...
- Spring整体架构
Spring整体架构 Spring的整体架构 Spring框架是分层架构的,它包含了一系列的功能要素. Spring整体架构图 模块分类 1. Core Container Core Containe ...
随机推荐
- Python 正则表达式(RegEx)
版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
- 7 ~ express ~ body-parser 模块的使用
一,安装 : npm install body-parser 二,加载 : var bodyParser = require('body-parser') 三,配置 : https://github. ...
- UltraISO制作manjaro系统盘,使用优盘
下载系统镜像 默认是清华镜像 刻入方式一定要选RAW方式
- Assignment写作需要掌握的两种表达方式
在正式开始写Assignment之前都会进行文献检索和整理,选择适合Assignment选题的文献资料进行阅读和引用.对于文献中与自己的观点高度相关的参考资料要如何具体引用,而不造成抄袭或者增加文章的 ...
- Python win32api.keybd_event模拟键盘输入
win32api.keybd_event 该函数原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo) 第一个参数:虚拟键码(键盘键码对照表见附录): 第二个 ...
- Flink并行度
并行执行 本节介绍如何在Flink中配置程序的并行执行.FLink程序由多个任务(转换/操作符.数据源和sinks)组成.任务被分成多个并行实例来执行,每个并行实例处理任务的输入数据的子集.任务的并行 ...
- java里mongodb复合查询
Query query = new Query();Criteria criteria = Criteria.where("packetTitle").is(redPacketSt ...
- Java 14 都要来了,为什么还有这么多人固守Java8?
作者:刘欣 从Java 9开始,Java版本的发布就让人眼花缭乱了. 每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份, ...
- Tensorflow学习教程------变量
#coding:utf-8 import tensorflow as tf x = tf.Variable([1,2]) a = tf.constant([3,3]) #增加一个减法op sub = ...