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
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.
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.
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.
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:
schema.sql and data.sql support needs some improvements so we're not keen to move that model over to R2DBCDataSourceProvider interface is present. R2DBC could expose such an interface when it configures a ConnectionFactory. This would make the datasource initialization support transparentDataSourceProvider 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).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.
Blocked on https://jira.spring.io/browse/DATAJDBC-492
spring-projects/spring-data-r2dbc#311 and https://jira.spring.io/browse/DATAJDBC-492 are fixed now.
Thanks @mp911de, this helped.
@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?
@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.
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
@abhi2495 org.springframework.boot:spring-boot-starter-data-r2dbc has been in Maven Central and the Spring Release repository since version 2.3.0.