想要了解更多关于响应式API的信息?看看这篇文章,我们将探索使用R2DBC,Spring Data JDBC等构建响应式Web应用程序。
我知道 - 标题中已列出很多技术。 Spring WebFlux,作为构建响应堆栈Web应用程序的项目,已经被Spring 5和Spring Boot 2中引入。我曾在这篇文章中-Spring WebFlux和Spring Cloud的响应式微服务描述了它如何与Spring Boot和Spring Cloud来构建响应式微服务。 Spring 5还引入了支持对NoSQL数据库进行响应性访问的项目,如Cassandra,MongoDB或Couchbase。但是,仍然缺乏对访问关系型数据库的响应性的支持。这一变化将随着R2DBC(响应关系数据库连接)项目一起发生变化。该项目也由Pivotal成员开发。这似乎是一个非常有趣的行为,然而,它正处于起步阶段。无论如何,有一个与Postgres集成的模块,我们将用它来演示应用程序。
R2DBC不是本文中描述的唯一一个新的有趣解决方案。我还将向您展示如何使用Spring Data JDBC - 这是最近发布的另一个非常有趣的项目。值得一提的是Spring Data JDBC的功能。该项目已经发布,可在1.0版本下使用。它是更大的Spring Data框架的一部分。它提供了基于JDBC的存储库抽象。创建该库的主要原因是允许使用Spring Data(通过CrudRepository接口)访问关系数据库,而不将JPA库包含到应用程序依赖项中。当然,JPA仍然是用于Java应用程序的主要持久性API。 Spring Data JDBC旨在通过不实现延迟加载,缓存,脏上下文和会话等流行模式,在概念上比JPA更简单。它还为基于注释的映射提供非常有限的支持。最后,它提供了使用R2DBC访问关系数据库的反应式存储库的实现。虽然该模块仍在开发中(只有SNAPSHOT版本可用),但我们将在演示应用程序中尝试使用它。让我们继续做下去。
依赖包
我们使用Kotlin来实现。首先,我们包含一些必需的Kotlin依赖项。
org.jetbrains.kotlin
kotlin-stdlib
${kotlin.version}
com.fasterxml.jackson.module
jackson-module-kotlin
org.jetbrains.kotlin
kotlin-reflect
org.jetbrains.kotlin
kotlin-test-junit
${kotlin.version}
test
我们还应该添加kotlin-maven-plugin来支持Spring。
org.jetbrains.kotlin
kotlin-maven-plugin
${kotlin.version}
compile
compile
compile
test-compile
test-compile
test-compile
-Xjsr305=strict
spring
然后,我们继续包含演示实现所需的框架。我们需要包含专用于使用R2DBC访问数据库的Spring Data JDBC的特殊SNAPSHOT版本。我们还必须添加R2DBC库和Spring WebFlux。正如您在下面看到的,只有Spring WebFlux是稳定版本(作为Spring Boot RELEASE的一部分)。
org.springframework.boot
spring-boot-starter-webflux
org.springframework.data
spring-data-jdbc
1.0.0.r2dbc-SNAPSHOT
io.r2dbc