乐趣区

关于java: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 个次要沉闷的我的项目。

Spring 生态简介
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 生态简介
显然,spring-webmvc 模块依赖 spring-context,spring-aop 和 spring-web。

Spring 生态简介
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 CXF,Apache 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 Framework,Spring Security,Spring Boot,Spring Cloud。
如下图所示,再次对 Spring 生态做一个概括性总结。

如果本文对你有帮忙,别忘记给我个 3 连,点赞,转发,评论,

咱们下期见!答案获取形式:已赞 已评 已关~

学习更多 JAVA 常识与技巧,关注与私信博主(666)

退出移动版