对Spring的所有模块大概了解一下,建立一个整体的认知。
帮助你快速的构建独立的、生产级别的基于Spring的应用。采用固定方式对待Spring平台和第三方库,以此来尽可能消除Spring应用的配置。
地址: https://spring.io/projects/spring-boot
Spring 框架为现代Java企业应用提供了一个易于理解的编程和配置模型。Spring的一个关键元素是应用级别的基础设施支持,Spring关注企业的垂直领域,因此开发团队可以专注于应用层的业务逻辑,不需要被绑定到特定的部署环境。
Core technologies: dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP
Testing: mock objects, TestContext framework, Spring MVC Test, WebTestClient
Data Access: transactions, DAO support, JDBC, ORM, Marshalling XML.
Spring MVC and Spring WebFlux web frameworks.
Integration: remoting, JMS, JCA, JMX, email, tasks, scheduling, cache.
Languages: Kotlin, Groovy, dynamic languages.
地址:https://spring.io/projects/spring-framework
Spring Data的使命就是提供一个熟悉的、一直的、基于Spring的数据访问编程模型,并且仍然可以获得底层数据存储的特征。
它使得数据访问技术、关系型和非关系型数据库、map-reduce框架、基于云的数据服务更易于使用。这是一个伞形工程,其中包含了很多的针对特定数据库的子工程。
地址:https://spring.io/projects/spring-data
Spring Cloud提供快速构建一些分布式系统中公共模式的工具(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性token,全局锁,主节点选举,分布式sessions,集群状态)。协调的分布式系统会形成样板模式,开发者使用Spring Cloud可以快速的建立实现了那些模式的服务和应用。这些工具在任何分布式环境中都可以工作的很好,包括开发者自己的笔记本电脑,裸金属数据中心,和受管理的平台,例如Cloud Foundry。
Spring Cloud专注于为典型用例提供好的开箱即用的经验,并且提供扩展性机制以覆盖其他用例。
地址: https://spring.io/projects/spring-cloud
基于流和批处理的微服务,针对Cloud Foundry 和 Kubernetes.
Spring Cloud Data Flow 为流和批处理管道提供工具以创建复杂的拓扑。数据管道由Spring Boot应用组成,使用Spring Cloud Stream或者Spring Cloud Task微服务框架构建而成。
Spring Cloud Data Flow支持一定范围的数据处理用例,从ETL到导入导出、事件流和预测分析。
Spring Cloud Data Flow服务器使用Spring Cloud Deployer 部署数据管道,这些数据管道由现代平台(例如Cloud Foundry和Kubernetes)上的Spring Cloud Stream或者Spring Cloud Task应用组成。
一系列为各种数据整合和处理场景预构建的流和批处理应用有助于学习和积累经验。
可以使用熟悉的Spring Boot编程模型构建针对不同中间件和数据服务的定制化流和任务应用。
一个简单的stream pipeline DSL使得部署应用和连接输出出入变得简单。当一系列任务应用需要作为有向图运行的时候,The composed task DSL特别有用。
dashboard为构建交互式数据管道提供了图形化编辑器,可以查看部署的应用并且监控他们的指标,这些是通过使用 Wavefront, Prometheus, Influx DB或者其他监控系统实现的。
Spring Cloud Data Flow 服务为组合和部署数据管道暴露REST API。一个独立的 shell 使得从命令行与这些API工作变得简单。
地址: https://spring.io/projects/spring-cloud-dataflow
Spring Security 是一个可定制化的鉴权和访问控制框架。它是保护基于Spring的应用的事实标准。
Spring Security是一个专注于对于Java应用提供鉴权和授权的框架。就像所有的Spring项目一样,Spring Security真正的强大在于可以非常容易的扩展去满足定制化需求。
地址:https://spring.io/projects/spring-security
Spring GraphQL提供在GraphQL上构建Spring 应用的支持。这个项目是和GraphQL团队合作的项目。
地址:https://spring.io/projects/spring-graphql
Spring Session 为管理用户的session信息提供了API和实现。
Spring Session使支持集群会话变得非常简单,而无需绑定到特定于应用程序容器的解决方案 。它也支持与下列组件透明的整合:
Spring Session 由下面的模块组成:
地址:https://spring.io/projects/spring-session
扩展Spring编程模型去支持众所周知的企业整合模式( Enterprise Integration Patterns)。Spring Integration 在基于Spring的应用里开启了轻量级消息,并且通过申明式适配器支持和外部系统整合。这些适配器对Spring 支持 remoting, messaging, and scheduling进行了高度抽象。Spring Integration的主要目标是提供一个构建企业整合方案的简单模型,并且维持关注点的分离,这对于产生可维护的、可测试的代码至关重要。
Spring Framework鼓励开发者使用接口和依赖注入(DI)来提供Plain Old Java Object(POJO)和它执行任务所需要的依赖。Spring Integration在这个概念上更进一步,使用消息范式将POJO组装到一起,并且独立的组件也许感知不到应用中其他组件。组装精细化可重用的组件去形成更高层级的功能,以此来构建应用。如果仔细设计,即使在更高层级这些流程也可以被模块化和重用。
除了把精细化的组件组装到一起,Spring Integration提供一系列的通道适配器和路由来于外部系统通信。通道适配器用于单路整合(发送或接收);路由用于请求、响应场景(进入边界或出边界)。
Spring Cloud Stream项目基于Spring Integration构建,其中Spring Integration 用作消息驱动微服务的引擎。
地址:https://spring.io/projects/spring-integration
当使用Spring和Spring MVC时,Spring HATEOAS提供了一些轻松创建Rest表示模型 的API。它强调的核心问题是创建链接(link creation)和组装表示模型(representation assembly)。
了解HATEOAS:https://zhuanlan.zhihu.com/p/96027191
Spring Boot 将会做下面的事情:
地址: https://spring.io/projects/spring-hateoas
Spring REST Docs 帮助你文档化RESTful 服务。
它会组合手下的文档和Spring MVC Test自动生成的片段。这些方式可以将你从工具的文档限制中解放出来,例如 Swagger。
它帮助你生成准确、简介、组织良好的文档。这些文档可以让你的用户获得他们需要的信息,并且没有迷惑。
Spring Boot提供了@AutoConfigureRestDocs
注解来使用你的测试中的Spring REST Docs。
地址:https://spring.io/projects/spring-restdocs
一个轻量级、易于理解的批处理框架,设计目标是开启健壮批处理应用的开发,特别是对于企业系统的日常操作。
Spring Batch提供了对于处理大量记录非常关键的可重用功能。这些大量记录包括日志、跟踪、事务管理、任务处理统计、任务重启和资源管理。它也提供了更高级技术服务和特性,通过优化和分区技术这些服务和特性可以进行数据量特别大和性能要求特别高的批处理任务。简单的、复杂的、数据量大的批处理任务都可以利用这个框架以容易扩展的方式处理大量信息。
地址:https://spring.io/projects/spring-batch
Spring AMQP工程将Spring 核心概念应用到基于AMQP消息解决方案的开发中。它为发送和接收消息提供了一个高度抽象的模板。它用"listener container"对消息驱动的POJOs提供支持。这些库促进了AMQP资源的管理,并且改善了依赖注入和声明式配置的使用。在这所有例子中,你会发现和Spring Framework支持JMS一样。
这个工程由两部分组成:spring-amqp是基础抽象,spring-rabbit是RabbitMQ的实现。
地址:https://spring.io/projects/spring-amqp
Spring CredHub 在客户端侧提供了存储、检索和删除服务器上的证书,CredHub服务器运行在云服务平台上。
CredHub提供安全存储、生成、检索和删除各种类型证书的API。Spring CredHub对CredHub API提供了Java 绑定,使得Spring应用整合CredHub非常容易。
地址:https://spring.io/projects/spring-credhub
Spring Flo是一个JavaScript库,为管道和简单图提供了基础嵌入的HTML5可视化构建器。这个库用作Spring Cloud Data Flow中Stream构建器的基础。
Flo包含integration-flow designer 的所有基础元素,例如连接器、控制节点、面板、状态转换和图拓扑,有文本shell,支持SDL,设计用来创建和检视可理解性工作流的图形画布。
地址:https://spring.io/projects/spring-flo
The Spring for Apache Kafka (spring-kafka) 项目将Spring 核心概念应用到开发基于kafka的消息解决方案中。它提供发送消息的高度抽象模板。它也支持有@KafkaListener
注解的消息驱动POJOs和监听者容器(listener container)。这些库促进了依赖注入和声明的使用。在所有的这些案例中,你会发现和Spring Framework中支持JMS、Spring AMQP支持RabbitMQ很相似。
KafkaTemplate
KafkaMessageListenerContainer
@KafkaListener
KafkaTransactionManager
spring-kafka-test
jar with embedded kafka server
地址:https://spring.io/projects/spring-kafka#overview
Spring LDAP是一个简化Java中LDAP编程类库,它遵循的原则和Spring Jdbc一样。
LdapTemplate类封装了传统LDAP编程中所有的繁琐工作,例如创建、遍历
NamingEnumerations、处理异常和清理资源。这些繁琐的工作使得程序员要处理大量材料,数据在哪儿,要怎么处理数据等。就和JdbcTemplate一样,LdapTemplate为程序员消除了所有这些琐碎的工作,他们只需要处理实际的SQL和考虑怎么把数据映射到领域模型上。
除了这些,Spring LDAP支持将NamingExceptions 转化为未受检异常,并且提供了一些工具方法来处理filters、LDAP paths 和 attributes。
地址: https://spring.io/projects/spring-ldap
Java开发者的下一代应用快速开发工具。使用Roo,你可以在几分钟内构建一个完整的Java应用。
地址:https://projects.spring.io/spring-roo/
Spring Shell 工程的使用者可以快速构建一个全特性的shell应用,这依赖于Spring Shell 的jar包和添加用户自己的命令,这些命令都来源于Spring Beans的方法。创建命令行应用是非常有用的,例如和你项目的REST API进行交互,或者与本地文件内容进行工作。
Spring Shell的特性包括如下:
地址:https://spring.io/projects/spring-shell
Spring Statemachine框架可以方便应用开发者在Spring 应用中使用状态机概念。
Spring Statemachibe旨在提供下面的特性:
状态机是强大的,因为它的行为总是被保证是一致的,相对来说这使得容易调试。这是因为当机器启动时操作规则就是一成不变的了。这个思想就是你的应用也许存在有限数量的状态,并且某些提前定义好的出发器可以将你的应用从一个状态带到下一个状态。这种触发器可以基于事件或者定时器。
在你应用之外非常容易定义高层逻辑,然后依赖于状态机去管理状态。你可以通过发送事件、监听改变或者简单请求当前状态去和状态机交互。
地址:https://spring.io/projects/spring-statemachine
Spring Vault提供熟悉的Spring抽象,并且支持访问、存储和回收隐私。它提供低层和高层两种Vault交互抽象层级。将用户从底层设施中解放出来。
使用 HashiCorp’s Vault 你可以拥有一个中心点去管理所有环境上的应用外部隐私数据。Vault可以管理静态和动态隐私数据,例如应用数据、远端应用或资源的用户名和密码,为外部服务提供证书,例如MySQL、PostgreSQL、 Apache Cassandra、Consul、AWS等其他服务。
@Configuration
的Java类。@VaultPropertySource
的整合。地址:https://spring.io/projects/spring-vault
Spring Web Flow 构建在Spring MVC之上,允许实现流式Web应用(the “flows” of a web application)。一个流封装了一系列的步骤,这些步骤指导用户完成一些业务任务的执行。它会跨多个HTTP请求,有状态,处理事务数据,可重用,并且也许是动态的和长期运行的。
Spring Web Flow最佳应用场景是有控制导航的有状态web应用,例如,航班登记,申请贷款,购物车检验,甚至是向表单添加一个确认步骤。这些场景都有下面的特性:
Spring Web Flow 为了在高度抽象上编辑流提供了一个声明式流定义语言。它可以被整合进范围广泛的应用中,对于流编程模型来说,这些应用不会有任何的改变,包括Spring MVC、JSF和Portlet web 应用。需要导航的有状态web应用都有下面的通用问题:
地址:https://spring.io/projects/spring-webflow
Spring Web Services (Spring-WS) 是Spring社区专注于创建文档驱动的Web服务的产物。Spring Web Services 旨在促进重视协议的SOAP服务开发,允许使用操作XML负载的多种方式中的一种创建灵活的Web服务。这个产品是基于Spring本身的,这意味着你可以使用Spring概念,例如把依赖注入作为你的Web服务的必要部分。
人们使用Spring-WS有很多原因,但是大多数人在发现缺少可供选择的SOAP栈之后被它吸引,Spring-WS伴随这Web服务最佳实践而来。Spring-WS使得最佳实践变得容易。这包括WS-I 基础轮廓, 协议优先开发, 并在协议和实现实践是松耦合的。Spring Web的其他关键特性如下:
地址:https://spring.io/projects/spring-ws