3

I try to use spring with r2dbc

here my build.gradle

plugins {
    id 'org.springframework.boot' version '2.2.0.M4'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
    maven { url "https://repo.spring.io/snapshot" }
    maven { url "https://repo.spring.io/milestone" }
}

ext {
    set('springCloudVersion', "Greenwich.SR2")
}

dependencies {

     compile('io.jsonwebtoken:jjwt:0.9.1')

    //implementation 'io.jsonwebtoken:jjwt:0.9.1'

    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    implementation 'org.springframework.cloud:spring-cloud-starter-config'
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'



    //runtime 'io.r2dbc:r2dbc-pool:0.8.0.M8'
    implementation 'io.r2dbc:r2dbc-postgresql:1.0.0.M7'
    compile 'io.r2dbc:r2dbc-pool:1.0.0.BUILD-SNAPSHOT'
    implementation 'org.springframework.boot.experimental:spring-boot-starter-r2dbc:0.1.0.M1'
    implementation 'org.springframework.boot.experimental:spring-boot-starter-data-r2dbc:0.1.0.M1'



    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

When a call is done to findAll of repository, this error happen

java.lang.NoSuchMethodError: org.springframework.transaction.reactive.TransactionSynchronizationManager.currentTransaction()Lreactor/core/publisher/Mono;

update version to snapshot seem to fix issue about transaction

robert trudel
  • 5,283
  • 17
  • 72
  • 124

1 Answers1

0

The issue is in M1 spring-data-r2dbc, provided by 0.1.0.M1 of spring-boot-starter-data-r2dbc - you'll need to use the snapshot builds for now instead.

So change:

implementation 'org.springframework.boot.experimental:spring-boot-starter-data-r2dbc:0.1.0.M1'

to:

implementation 'org.springframework.boot.experimental:spring-boot-starter-data-r2dbc:0.1.0.BUILD-SNAPSHOT'

...and you should be good to go.

Worth noting that, at the time of writing at least, the relational reactive stuff (anything r2dbc based) is very bleeding edge and not at all something to use in production; the natural implication of that is that snapshot builds are required to work around bugs and instabilities from time to time. This will likely change in the future.

Michael Berry
  • 70,193
  • 21
  • 157
  • 216