Spring生态简介

目录

概述

做Java开发的人一提起Spring,首先在脑海中浮现出的就是“IoC”,“AOP”,“Spring MVC”,“Spring Security”等等这些名词,甚至大有“无Spring不Java”的感慨。 实际上,时至今日Spring已不再是一个简单的编程框架了,从最初的“SSH框架”发展到今天,Struts和Hibernate都几乎快要从程序员视野中消失了,而Spring却发展成了一个非常庞大且完整的生态。 所以说,除非特别指明是Spring生态中的某个具体框架,否则提起“Spring”应该指的是整个Spring生态。 说句不夸张的话,Java程序员只要精通了Spring,也就掌握了Java开发的精髓。

在整个Spring生态中包含了许多应用在特定场景的具体框架,如:“Spring Framework”,“Spring Security”,“Spring Boot”,“Spring Cloud”等等,其中“Spring Framework”框架是整个生态的核心基础,其他框架都需要依赖“Spring Framework”提供的基础功能,而且每个框架都有自己独立的代码仓库。

项目说明

Spring生态下的项目分为3类:主要项目(Main Projects),社区项目(Community Projects),已经终止但是目前还保留的项目(Projects in the Attic)。 最新的Spring生态项目列表详见:https://spring.io/projects

主要项目

目前,Spring生态中包含22个主要活跃的项目。

1.Spring Framework

Spring Framework项目是整个Spring生态的基础,包含了Spring最核心的功能,如:IoC,AOP,Spring MVC等,其他项目都需要依赖Spring Framework。 另外,还需要注意的是Spring Framework项目又包含多个子模块,如:spring-core,spring-beans,spring-context,spring-aop,spring-web,spring-webmvc等等。实际上,Spring Framework项目是一个模块化的架构,各模块之间又存在依赖关系。我们在Java Web后台项目中使用得最多的Spring MVC实际上就是模块spring-webmvc,它与其他模块的依赖关系如下所示:

显然,spring-webmvc模块依赖spring-contextspring-aopspring-web

2.Spring Boot

Spring Boot是一个开发基于Spring的脚手架项目,它默认集成了嵌入式Tomcat,配置注解化,支持快速集成第三方开发组件(如MyBatis),大大降低了使用Spring的门槛,而且内置了许多可以直接用于生产环境的功能,是目前用于开发微服务架构项目的不二选择。 值得注意的是: 许多人刚接触Spring Boot的人把它神话了,固然使用Spring Boot能快速开发一个健壮的、可直接运行的项目,但是它的核心和基础来源于Spring Framework。对于重度依赖Spring的开发人员,应该先去吃透Spring Framework,只要真正掌握了Spring Framework中各个模块的实现原理,对于在实际开发中使用Spring Boot遇到的问题也就迎刃而解了。

3.Spring Cloud

Spring Cloud为开发基于微服务架构的软件系统提供了一整套工具集合,其中包含了开发各个微服务组件的具体项目,如:Spring Cloud Config(配置中心),Spring Cloud Netflix(服务注册中心),Spring Cloud Sleuth(服务调用监控),Spring Cloud Gateway(服务网关)等等。 Spring Cloud的基础是Spring Boot,基于Spring Boot可以大大简化开发各微服务组件的流程。

4.Spring Cloud Data Flow

Spring Cloud Data Flow用于构建在云环境或K8S中基于微服务的实时或批数据处理架构,具体来讲就是支持一系列需要进行数据处理的场景,如:ETL,数据导入/导出,事件流,预测分析等等。

5.Spring Data

Spring Data旨在提供一套基于Spring编程模型的数据访问API,是一个数据访问框架集合,其中包含了多个具体的支持不同方式访问特定数据库类型的子模块,如:Spring Data JDBC(使用JDBC方式访问关系型数据库),Spring Data MongoDB(访问MongoDB数据库)等。 这个模块的功能类似于MyBatis这样的专门的ORM框架,在实际开发中可以根据需求进行灵活选择。

6.Spring Integration

Spring Integration的目的是提供一个简单的模型,用于构建企业级应用集成解决方案。

7.Spring Batch

Spring Batch是一个轻量级的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序。 支持事务管理,提供了基于Web的管理接口。

8.Spring Security

Spring Security是用于实现认证和授权,以及访问控制的安全框架,在Java生态与之提供类似的功能还有一个框架:Apache Shiro。 Spring Security依赖于Spring Framework,也就是说如果要Spring Security,那么应用架构也必须是基于Spring Framework的,这大大限制了Spring Security的使用场景;反之,Shiro就没有这样限制,而且从项目架构上Shiro更加简洁。当然,Spring Security提供了非常丰富的安全控制的功能,在某些方面甚至比Shiro更加完善,与之对应的是掌握的Spring Security的复杂度比较大。因此,对于在应用中是否选择Spring Security需要根据实际需求来决定。

9.Spring HATEOAS

如果Web应用基于Spring框架(即:使用了Spring MVC)开发,那么可以直接使用Spring HATEOAS来开发满足HATEOAS约束的RESTFul服务。 这里需要理解一个单词简写:“HATEOAS”。HATEOAS(Hypermedia as the engine of application state)是REST架构风格中最复杂的约束,也是构建成熟REST服务的核心。它的重要性在于打破了客户端和服务器之间严格的契约,使得客户端可以更加智能和自适应,而 REST 服务本身的演化和更新也变得更加容易。

10.Spring REST Docs

Spring REST Docs是一个文档工具,用于为REST架构风格的Web服务自动生成相应的文档,这样可以解放开发者专门撰写API文档的工作。

11.Spring AMQP

Spring AMQP项目旨在将核心的Spring概念应用于基于AMQP的消息传递解决方案的开发中,它提供了一个“模板”的抽象用于发送和接收消息。

12.Spring Mobile

Spring Mobile是对Spring MVC的扩展,旨在简化移动Web应用的开发。 Spring Mobile可以检测出当前请求使用的设备是PC、还是手机或者是平板以及用户设备是安卓平台还是iOS平台,然后根据请求设备的不同,返回适合该设备的视图。

13.Spring For Android

虽然官方的说法是Spring For Android旨在简化原声Android应用的开发,但其实这个有点太过于牵强。 Spring For Android提供了2个对原生Android应用开发的支持: (1)提供了一个REST客户端 (2)支持访问安全API时的认证

14.Spring Web Flow

Spring Web Flow主要应用于需要在Web页面上创建引导用户执行类似“下一步”这样的基于流程的应用场景,该框架构建于Spring MVC之上。

15.Spring Web Services

Spring Web Services用于开发WebService服务,类似的框架如:Apache CXFApache Axis2

16.Spring LDAP

Spring LDAP是一个工具,用于为基于Spring的应用程序使用LDAP(Lightweight Directory Access Protocol)协议。

17.Spring Session

Spring Session提供了管理用户Session信息的API和对应实现,Spring Session使得支持集群会话变得简单,而不依赖于特定于应用程序容器的解决方案。 简单来讲,传统的Session方案依赖于特定的容器(如:Tomcat),Spring Session就是提供独立于特定容器的Session解决方案。 其实,针对Tomcat容器,Session集群化也有一个开源方案:tomcat-redis-session-manager

18.Spring Shell

Spring Shell用于开发基于命令行交互的应用。

19.Spring FLO

Spring FLO是一个JavaScript类库,是Spring Cloud Data Flow中流构建器的基础。

20.Spring Kafka

Spring Kafka用于在Spring项目中与Kafka交互。

21.Spring Statemachine

Spring Statemachine是一个为开发人员在Spring项目中使用状态机的框架,帮助开发者简化状态机的开发过程,让状态机结构更加层次化。

22.Spring IO Platform

简单来说,Spring IO Platform是一个对项目依赖进行统一版本管理的工具。本质就是一个pom文件,它记录了Spring项目和其它第三方库对应的版本信息。

社区项目

社区项目目前只有2个:Spring ROO,Spring Scala。

1.Spring ROO:这是一个开发工具包,旨在快速构建一个Java应用。 2.Spring Scala:支持在Scala中使用Spring框架。

保留项目

某些项目已经终止了,但是仍然保留着,不必赘述。

最后总结

Spring是一个生态系统,提供许多有用的编程框架或工具集。 本文的目的不在于详细介绍Spring生态的每一个项目,而是通过一个全面的整理,对Spring生态有一个完整的认识,在实际中根据需要灵活选择对应的组件来使用即可。 可以明确的是,当下最为流行的Spring项目是这4个:Spring FrameworkSpring SecuritySpring BootSpring Cloud。 如下图所示,再次对Spring生态做一个概括性总结。

【参考】 https://www.ibm.com/developerworks/cn/java/j-lo-SpringHATEOAS/index.html 使用 Spring HATEOAS 开发 REST 服务 https://www.jianshu.com/p/f9024eb3f252 使用Spring Mobile实现网站移动端适配及更换主题 https://blog.csdn.net/csdn_xuexiaoqiang/article/details/65938744 Spring学习笔记之Spring Web Flow https://www.hifreud.com/2015/02/27/08-spring-mvc-spring-web-service/ Spring 使用笔记之(五) - Spring-ws实现基于契约优先的WebService https://www.ibm.com/developerworks/cn/web/wa-spring-session-architecture-and-design/index.html 详解 Spring Session 架构与设计 https://www.ibm.com/developerworks/cn/java/spring-shell-application/index.html 使用 Spring Shell 开发 Java 命令行应用 http://blog.didispace.com/spring-statemachine/ 使用Spring StateMachine框架实现状态机 https://www.jianshu.com/p/dd0baba45f52 Spring IO Platform 简介 https://segmentfault.com/a/1190000012743018 Spring IO Platform项目的介绍和应用 https://www.cnblogs.com/chenpi/p/6295855.html Spring IO Platform简介及示例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 细说Spring框架之核心01-概述

    官网:https://spring.io/projects/spring-framework 文档:https://docs.spring.io/spring...

    2Simple
  • Spring Boot系列之-helloword入门

    一. What: Spring Boot是什么? 以1.4.3.RELEASE为例,官方介绍为:http://docs.spring.io/spring-boo...

    2Simple
  • 通过Hack方式实现SDC中Stage配置联动刷新

    最近项目组准备开发一个IoT平台项目,需要使用到StreamSets DataCollector组件进行数据处理。 其中的一个Stage,产品经理设计了一个如...

    2Simple
  • 玩转Spring,行家的视频课程

    毋庸置疑,Spring早已成为Java后端开发事实上的行业标准,无数的公司选择Spring作为基础的开发框架,大部分Java后端程序员在日常工作中也会接触到Sp...

    JavaQ
  • Spring、SpringMVC和SpringBoot看这一篇就够了!

    Spring是一个开源容器框架,可以接管web层,业务层,dao层,持久层的组件,并且可以配置各种bean,和维护bean与bean之间的关系。其核心就是控制反...

    刘文正
  • 一篇告诉你什么是Spring

    然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(...

    JavaPub
  • Spring模块化设计:Spring功能特性如何在不同模块中组织?

    Spring的模块化设计和Java 9 的模块化设计不是对等的,不过Spring 的模块化确实可以运用到Java 9 的模块化里面去 ,那是为什么呢,那是因为在...

    码农架构
  • Spring 简介,带你打开 Spring 的大门

    Spring 其实是一个很大的范围概称,包含着许多分支,在正式了解 Spring 之前,我们先来看看 Spring 家族中的主要分支:

    村雨遥
  • SpringBoot入门系列(一)如何快速创建SpringBoot项目

    这段时间也没什么事情,所以就重新学习整理了Spring Boot的相关内容。今天开始整理更新Spring Boot学习笔记,感兴趣的朋友可以关注我的博客:htt...

    架构师精进
  • 1.1 了解Spring框架 -《SSM深入解析与项目实战》

    专栏链接:https://chenhx.blog.csdn.net/category_10263372.html

    谙忆

扫码关注云+社区

领取腾讯云代金券