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 ...
随机推荐
- Java高级特性——注解,这也许是最简单易懂的文章了
最近,浪尖在做flink的项目时source和sink的绑定那块用到了注解,当然新版本1.6以后就变为server load的方式加载. 但是浪尖也是觉得很有毕业讲一下注解,毕竟高级免试也会问答的吧. ...
- mysql多表关联更新
update 表A inner join 表B on 表A.关联字段 = 表B.关联字段 set 表a.待更新字段01 = 表B.字段01 , 表a.待更新字段021 = 表B.字段02 where ...
- Markdown工具推荐
Markdown 因语法简单,应用广泛,在近几年被很多开发者所喜爱.常用的语法不多,也就十来种吧.本人自从2017年接触就一发不可收拾. 在这几年里,用过了很多写Markdown的工具.接下来就以现在 ...
- Redis的安装并配置快捷启动
Redis 安装 1.下载 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.解压 tar -zxvf redis-5.0.5.t ...
- PC端页面适应不同的分辨率的方法 (转载)
原文地址:https://blog.csdn.net/fengzhen8023/article/details/81281117 上周完成一个PC端的项目,对于我这样的小白来说,这个项目里面最大的问题 ...
- 三十、CI框架之使用cookies实现用户登录和退出。
一.在控制器中,写入3个函数.一个是login用于登录,一个是logout用于退出,一个show用来展示界面. login代码如下: logout和showuser函数如下: 二.我们的登录界面 三. ...
- 吴裕雄--天生自然Django框架开发笔记:Django Nginx+uwsgi 安装配置
Django Nginx+uwsgi 安装配置 使用 python manage.py runserver 来运行服务器.这只适用测试环境中使用. 正式发布的服务,需要一个可以稳定而持续的服务器,比如 ...
- P1426 小鱼会有危险吗
题解: 在测试数据里有一个是临界值问题,探测范围是闭区间 #include<stdio.h>int main(){ double s,x; //注意:此 ...
- PAT 2012 冬
A Shortest Distance 题意相当于一个环,找出两点间从不同方向得到的距离中的最小值. #include <cstdio> #include <iostream> ...
- bestphp's revenge
0x00 知识点 1利用PHP原生类来构造POP链 本题没有可以利用的类,没有可以利用的类就找不到POP链所以只能考虑PHP原生类 我们先来解释一下什么是POP链 POP:面向属性编程 在二进制利用时 ...