《Spring技术内幕》——1.1节Spring的各个子项目

简介: 本节书摘来自华章社区《Spring技术内幕》一书中的第1章,第1.1节Spring的各个子项目,作者:计文柯,更多章节内容可以访问云栖社区“华章社区”公众号查看

第1章
Spring的设计理念和整体架构
横看成岭侧成峰,远近高低各不同。
不识庐山真面目,只缘身在此山中。
—【宋】苏轼《题西林壁》
本章内容

  • Spring的各个子项目
  • Spring的设计目标
  • Spring的整体架构
  • Spring的应用场景

1.1 Spring的各个子项目
打开Spring社区网站http://www.springsource.org, 我们可以看到围绕Spring核心构建出的一个丰富的平台生态系统。在这个平台生态系统中,除了Spring本身,还有许多值得注意的子项目。对Spring应用开发者来说,了解这些子项目,可以更好地使用Spring,或者说,可以通过阅读这些子项目的实现代码,更深入地了解Spring的设计架构和实现原理。这里将会对Spring的各个子项目进行简要的介绍。首先,在SpringSource的官方社区网站中单击Project链接,这时就可以看到Projects下拉列表中列出的各个子项目的项目链接,如图1-1所示。


609cdd00ac7ac3c5dfbcde43ec5464f27e1c9759

下面对Spring的主要子项目情况进行简要介绍,帮助读者熟悉Spring的整个生态系统的情况。
q Spring Framework (Core):这是我们熟知的Spring项目的核心。Spring Framework (Core)中包含了一系列IoC容器的设计,提供了依赖反转模式的实现;同时,还集成了AOP功能;另外,在Spring Framework (Core)中,还包含了其他Spring的基本模块,比如MVC、JDBC、事务处理模块的实现。这些模块的详细设计和实现,会在本书后续章节中详细阐述。
q Spring Web Flow:原先的Spring Web Flow是一个建立在Spring MVC基础上的Web工作流引擎。随着其自身项目的发展,Web Flow比原来更为丰富,Spring Web Flow定义了一种特定的语言来描述工作流,同时高级的工作流控制器引擎可以管理会话状态,支持AJAX来构建丰富的客户端体验,并且提供对JSF的支持。如图1-2所示是Spring Web Flow的架构图,通过这个图,我们可以了解到,Spring Web Flow实际上是构建在Spring MVC基础上的,是相对于Spring Framework (Core)独立发展的。


8c3c92b8bad51fab556b19d2abf1971381a6f9e3

q Spring BlazeDS Integration:这是一个提供Spring与Adobe Flex技术集成的模块,大家应该都领略过使用Flex技术做前端展现的绚丽效果。在现实的应用开发中,如果使用Flex作为前端,那么后端怎样和服务器端集成才能正好成为利用Java EE技术构建的后端呢?Spring BlazeDS Integration简化了这种集成工作,特别是对后端应用由Spring来构建的情况,正是Spring BlazeDS大显身手的场合了。在Spring BlazeDS Integration项目中,为Flex前端和后台的通信提供了和Spring开发模式一致的编程模型。在这个项目中,实际上使用了BlazeDS这个由Adobe提供的模块,这个BlazeDS模块实现了Flex前端展现和服务器后端处理的通信机制。在这个实现的基础上,Spring BlazeDS Integration进行了进一步的封装,让这个模块的使用更像是由一个受Spring IoC容器管理的Bean。
q Spring Security:是广泛使用的基于Spring的认证和安全工具,就是先前在Spring社区中久负盛名的Acegi框架,Spring的老用户对这个框架都不陌生—这是一个自发的由Spring的爱好者发起的安全框架,其目标是为Spring应用提供一个安全服务,比如用户认证、授权等。可以说,没有这样一个框架,很多Spring应用的开发是很难成为一个完整应用的,因为框架是构建用户管理的核心和基础。Spring Acegi由Spring团队接手后,在2006年发行了稳定的1.0正式版,虽然是基于Acegi框架的,但是Spring Security已经在原有基础上增加了许多的新特性。关于这个框架的架构和具体实现,本书的后续章节会进行详细介绍。
q Spring Security OAuth:这个项目为OAuth在Spring上的集成提供支持。OAuth是一个第三方的模块,提供一个开放的协议的实现,通过这个协议,前端桌面应用可以对Web应用进行简单而标准的安全调用。
q Spring Dynamic Modules:可以让Spring应用运行在OSGi的平台上。我们知道,通过使用OSGi平台,增加了应用在部署和运行时的灵活性, Eclipse就是构建在OSGi的平台上,通过这个项目,可以在OSGi平台上方便地运行Spring应用。
q Spring Batch:提供构建批处理应用和自动化操作的框架,这些应用的特点是不需要与用户交互,重复的操作量大,对于大容量的批量数据处理而言,这些操作往往要求较高的可靠性。Spring Batch的架构如图1-3所示。


f0d7ec510a605c5eb9e5ebe653c3a74fc0b51e37

q Spring Integration:体现了“企业集成模式”的具体实现,并为企业的数据集成提供解决方案。Spring Integration为企业数据集成提供了各种适配器,通过这些适配器来转换各种消息格式,并帮助Spring应用完成与企业应用系统的集成。
q Spring AMQP:是为Spring应用更好地使用基于AMQP(高级消息队列协议)的消息服务而开发的,使在Spring应用中使用AMQP消息服务器变得更为简单。这个项目支持Java和.NET两个版本。SpringSource旗下的Rabbit MQ就是一个开源的基于AMQP的消息服务器,Rabbit MQ是用Erlang语言开发出来的。
q Spring .NET:如果想在.NET环境中也像在Java环境中使用Spring一样为应用开发带来便利,那应该怎么办?可以考虑使用Spring .NET项目,这是Spring在.NET环境中的移植,.NET开发人员通过它可以在.NET环境中使用Spring的IoC容器,以及AOP这些在Java开发中被大家熟知的特性。希望通过Spring .NET项目,能够简化.NET的应用开发。
q Spring Android:为Android终端开发应用提供Spring的支持,它提供了一个在Android应用环境中工作,基于Java的REST客户端。
q Spring Mobile:Spring Mobile和Spring Android不同,它能使工作在Spring传统的服务器端完成。它是基于Spring MVC构建的,为移动终端的服务器应用开发提供支持,比如,使用Spring Mobile可以在服务器端自动识别连接到服务器的移动终端的相关设备信息,从而为特定的移动终端实现应用定制。
q Spring Social:是Spring框架的扩展,可以帮助Spring应用更方便地使用SNS(Social Network Service),例如FaceBook和Twitter这些服务的使用等。
q Spring Data:该项目为Spring应用提供使用非关系型数据的能力,比如,当基础数据并非存储在关系数据库中时,又如Map-Reduce中的分布式存储、云计算存储环境等。 Spring应用可以考虑使用Spring Data来操作这种类型的数据。

相关文章
|
1月前
|
Java Spring
【编程笔记】在 Spring 项目中使用 RestTemplate 发送网络请求
【编程笔记】在 Spring 项目中使用 RestTemplate 发送网络请求
94 0
|
2月前
|
缓存 NoSQL Java
Spring Boot项目中热点场景详解(万字总结)
Spring Boot项目中热点场景详解(万字总结)
|
3月前
|
监控 安全 Java
Java(spring cloud)智慧工地(项目层+工地层+APP)源码
智慧工地提供工地智能管理服务,打通数据壁垒,互通管理中心各平台。实现:“可视”、“可控”、“可管”。智慧工地管理云平台是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段,实现对工地施工、设备状态、人员安全等方面的实时监控和管理。
31 1
|
3月前
|
XML Java 数据库连接
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
67 0
|
3月前
|
Java Spring 容器
springcloud项目中指定扫描路径
springcloud项目中指定扫描路径
57 7
|
30天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
130 0
|
2月前
|
监控 IDE Java
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
40 0
|
1月前
|
缓存 NoSQL Java
spring cache整合redis实现springboot项目中的缓存功能
spring cache整合redis实现springboot项目中的缓存功能
45 1
|
1月前
|
Java Shell API
通用Shell脚本执行Spring Boot项目Jar包
通用Shell脚本执行Spring Boot项目Jar包
|
1月前
|
存储 Java 关系型数据库
Spring Batch学习记录及示例项目代码
Spring Batch学习记录及示例项目代码