Use the open-source R2DBC driver

R2DBC is a specification for non-blocking access to relational databases, based on Reactive Streams. Your application can make use of the reactive database connectivity with Spanner by using the Spanner R2DBC driver.

Add dependencies

Spring Data users should use the Spring Data R2DBC dialect for Spanner; all other users should bring in the Spanner R2DBC driver only.

Use the Spanner R2DBC driver

To add only the Spanner R2DBC driver to your application, add the following dependency:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>cloud-spanner-r2dbc</artifactId>
  <version>1.3.0</version>
</dependency>

For more information, see the Spanner R2DBC driver GitHub repository and the sample code.

Use the Spring Data R2DBC dialect for Spanner

For users of the Spring Framework, Spring Data provides familiar abstractions to simplify interaction with common database operations.

To use Spring Data R2DBC features with Spanner, add the following dependency to your project. The driver is a transitive dependency of the dialect.

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>cloud-spanner-spring-data-r2dbc</artifactId>
  <version>1.2.2</version>
</dependency>

To learn how to use its template and repositories, see the Spring Data R2DBC reference. To see which objects are automatically configured for your, see the Spring Boot reference.

For more information, see the Spanner Spring Data R2DBC GitHub repository.

Spring Boot configuration

Regardless of which R2DBC dependency you use, if your application is based on Spring Boot, the framework will attempt to automatically configure and provide a connection factory for you.

Provide a spring.r2dbc.url property to let autoconfiguration take care of R2DBC connection factory configuration. The format is shown in the following sample application.properties entry:

spring.r2dbc.url=\
r2dbc:cloudspanner://spanner.googleapis.com:443/projects/${project}/instances/${instance}/databases/${database}

What's next