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.sqlanddata.sqlsupport 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
DataSourceProviderinterface is present. R2DBC could expose such an interface when it configures aConnectionFactory. This would make the datasource initialization support transparent - If a
DataSourceProviderbean is present, the embedded fallback thatDataSourceAutoConfigurationapplies should back-off The net effect is that, when using R2DBC, noDataSourcebean 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?
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.