Good afternoon,

I would like to know if exist any plan to provide a R2DBC starter that is shipped by Spring Boot itself. Currently, if a project requires the dependency R2DBC, it appears as Experimental in https://start.spring.io/

Does exist any plan to change the status?

Many thanks in advance

Juan Antonio

@mp911de

Comment From: snicoll

As far as I know, r2dbc is scheduled to be integrated to the Spring Data release train with Neumann (next major release). When that's the case, it will no longer be experimental and we can take it from there.

Going forward, please ask questions on ou Gitter channel or StackOverflow.

Comment From: snicoll

Looking at the issue tracker, we don't have an issue to track the integration of R2DBC here so we can just as well reuse this issue. I'll update the title to make that clear.

Comment From: snicoll

We've discussed this one a bit today and we're going to do our best to implement this for 2.3. We're going to use a separate namespace, with support for Flyway and Liquibase only, creating a "local" DataSource for the purpose of the migration.

We should also upgrade @AutoConfigureTestDatabase to swap the ConnectionFactory if possible.

The work that has been done in https://github.com/spring-projects-experimental/spring-boot-r2dbc should help us significantly.

Comment From: snicoll

We've been discussing how database initialization should work and the relationship with spring.datasource. We think that the two should be completely separated and yet some of the datasource auto-config should be aware of the fact that a fallback was applied on the R2DBC side of things.

In short:

  • The schema.sql and data.sql support needs some improvements so we're not keen to move that model over to R2DBC
  • There is an opportunity to improve the flyway and liquibase auto-coniguration to detect if a DataSourceProvider interface is present. R2DBC could expose such an interface when it configures a ConnectionFactory. This would make the datasource initialization support transparent
  • If a DataSourceProvider bean is present, the embedded fallback that DataSourceAutoConfiguration applies should back-off The net effect is that, when using R2DBC, no DataSource bean is exposed at all (unless a uri is configured explicitly).

Comment From: snicoll

I've made quite some good progress on the experimental project. ConnectionFactoryBuilder and R2dbcProperties are in a state that would fit with what we have in mind. data/schema support has been therefore removed. This is available on master as I'd like to check for potential issues.

I've also started to spike on the idea to translate a ConnectionFactoryOptions to a jdbc url automatically. Need some more testing and a change here to introduce the DatasourceProvider contract.

Comment From: snicoll

Blocked on https://jira.spring.io/browse/DATAJDBC-492

Comment From: mp911de

spring-projects/spring-data-r2dbc#311 and https://jira.spring.io/browse/DATAJDBC-492 are fixed now.

Comment From: snicoll

Thanks @mp911de, this helped.

Comment From: abhi2495

@snicoll What is the spring boot dependency to be used for using the r2dbc ?

Is this the one or any spring boot starter dependency also present?

org.springframework.data spring-data-r2dbc 1.1.1.RELEASE

Comment From: wilkinsona

@abhi2495 There's a list of starters in the reference documentation where you'll find spring-boot-starter-data-r2dbc which is the "starter for using Spring Data R2DBC". If you want to use R2DBC without Spring Data, then there's no starter and you should add the R2DBC dependencies directly.

Comment From: abhi2495

Thanks @wilkinsona . Thing is , the only spring-boot-starter-data-r2dbc artifact that I could see listed in Maven repository belonged to the group org.springframework.boot.experimental. That's why I wanted to know if there is a starter artifact from group org.springframework.boot

Comment From: scottfrederick

@abhi2495 org.springframework.boot:spring-boot-starter-data-r2dbc has been in Maven Central and the Spring Release repository since version 2.3.0.