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 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 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子项目