一. R2DBC 介绍
在 R2DBC 官网(http://r2dbc.io/) 上,对 R2DBC 有一句话的介绍:
The Reactive Relational Database Connectivity (R2DBC) project brings reactive programming APIs to relational databases.
R2DBC 的含义是 Reactive Relational Database Connectivity,它是一个使用响应式驱动程序集成关系数据库的孵化器。它是在响应式编程的基础上使用关系数据访问技术。
R2DBC 最初是一项实验和概念验证,旨在将 SQL 数据库集成到使用响应式编程模型的系统中。JDBC 使用的是阻塞式 API,而 R2DBC 允许开发者使用无阻塞 API 访问关系数据库,因为 R2DBC 包含 Reactive Streams 规范。从官网上还能看到 R2DBC 支持的响应式框架包括:Reactor、RxJava、Smallrye Mutiny。
R2DBC 目前是一个开放的规范,它为驱动程序供应商实现和客户端使用建立了一个服务提供者接口(SPI)。
另外,R2DBC 是由 Spring 官方团队提出的规范,除了驱动实现外还提供了 R2DBC 连接池和 R2DBC 代理。
目前 R2DBC 已经支持的驱动实现包括:
cloud-spanner-r2dbc - driver for Google Cloud Spanner.
jasync-sql - R2DBC wrapper for Java & Kotlin Async Database Driver for MySQL and PostgreSQL (written in Kotlin).
r2dbc-h2 - native driver implemented for H2 as a test database.
r2dbc-mariadb - native driver implemented for MariaDB.
r2dbc-mssql - native driver implemented for Microsoft SQL Server.
r2dbc-mysql - native driver implemented for MySQL.
r2dbc-postgres - native driver implemented for PostgreSQL.
二. R2DBC 使用
在 Gradle 中配置 Spring Boot 以及 R2DBC 相关依赖的库:
implementation "io.r2dbc:r2dbc-h2:0.8.4.RELEASE"
implementation "com.h2database:h2:1.4.200"
implementation "org.springframework.data:spring-data-r2dbc:1.0.0.RELEASE"
implementation "org.springframework.boot:spring-boot-starter-actuator:2.3.5.RELEASE"
implementation "org.springframework.boot:spring-boot-starter-data-r2dbc:2.3.5.RELEASE"
implementation "org.springframework.boot:spring-boot-starter-webflux:2.3.5.RELEASE"
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:2.3.5.RELEASE"
implementation "io.projectreactor.kotlin:reactor-kotlin-extensions:1.1.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-reactor:1.3.9"