Search code examples
hibernatespring-data-jpagoogle-cloud-spanner

Error creating bean with name 'entityManagerFactory' defined in class path resource due to NettyTransportFactory in netty-shaded for io.grpc


I am using gcp spanner with hibernate.

Here are the list of all the dependencies

    <dependencies>

    <dependency>
      <artifactId>resilience4j-spring-boot3</artifactId>
      <groupId>io.github.resilience4j</groupId>
    </dependency>

    <dependency>
      <artifactId>resilience4j-reactor</artifactId>
      <groupId>io.github.resilience4j</groupId>
    </dependency>

    <dependency>
      <artifactId>wiremock-standalone</artifactId>
      <groupId>org.wiremock</groupId>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
      <groupId>org.springframework.boot</groupId>
    </dependency>
    
    <dependency>
      <artifactId>google-cloud-spanner-hibernate-dialect</artifactId>
      <groupId>com.google.cloud</groupId>
      <version>3.4.0</version>
    </dependency>

    <dependency>
      <artifactId>google-cloud-spanner-jdbc</artifactId>
      <groupId>com.google.cloud</groupId>
      <version>2.20.1</version>
    </dependency>
    
  </dependencies>

Parent dependencies and dependencyManagement

<dependencyManagement>
    <dependencies>
      <dependency>
        <artifactId>resilience4j-spring-boot3</artifactId>
        <groupId>io.github.resilience4j</groupId>
        <version>${resilience4j.spring3.version}</version>
      </dependency>
      <dependency>
        <artifactId>resilience4j-reactor</artifactId>
        <groupId>io.github.resilience4j</groupId>
        <version>${resilience4j.spring3.version}</version>
      </dependency>
      <dependency>
        <artifactId>common-library</artifactId>
        <groupId>com.sams.payment</groupId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <artifactId>common-model</artifactId>
        <groupId>com.sams.payment</groupId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <artifactId>authorizer</artifactId>
        <groupId>com.sams.payment</groupId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <artifactId>settlement-processor</artifactId>
        <groupId>com.sams.payment</groupId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <artifactId>giftcard-processor</artifactId>
        <groupId>com.sams.payment</groupId>
        <version>${project.version}</version>
      </dependency>

      <dependency>
        <artifactId>wiremock-standalone</artifactId>
        <groupId>org.wiremock</groupId>
        <scope>test</scope>
        <version>${wiremock.version}</version>
      </dependency>
      <dependency>
        <artifactId>spring-cloud-dependencies</artifactId>
        <groupId>org.springframework.cloud</groupId>
        <scope>import</scope>
        <type>pom</type>
        <version>${spring-cloud.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <artifactId>spring-boot-starter-webflux</artifactId>
      <groupId>org.springframework.boot</groupId>
    </dependency>
    <dependency>
      <artifactId>spring-boot-starter-test</artifactId>
      <groupId>org.springframework.boot</groupId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <artifactId>reactor-test</artifactId>
      <groupId>io.projectreactor</groupId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <artifactId>lombok</artifactId>
      <groupId>org.projectlombok</groupId>
      <version>1.18.30</version>
    </dependency>
    <dependency>
      <artifactId>spring-boot-starter-actuator</artifactId>
      <groupId>org.springframework.boot</groupId>
    </dependency>
    <dependency>
      <artifactId>micrometer-tracing-bridge-otel</artifactId>
      <groupId>io.micrometer</groupId>
    </dependency>
    <dependency>
      <artifactId>spring-boot-starter-aop</artifactId>
      <groupId>org.springframework.boot</groupId>
    </dependency>
    <dependency>
      <artifactId>micrometer-registry-prometheus</artifactId>
      <groupId>io.micrometer</groupId>
    </dependency>
    <dependency>
      <artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
      <groupId>org.springdoc</groupId>
      <version>${springdoc.openapi.version}</version>
    </dependency>
  </dependencies>

  <parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <relativePath/>
    <version>3.2.1</version> <!-- lookup parent from repository -->
  </parent>

<properties>  
    <java.version>17</java.version>
    
  <maven.compiler.plugin.version>3.9.0</maven.compiler.plugin.version>
    <maven.dependency.plugin>3.0.1</maven.dependency.plugin>
    <maven.release.plugin.version>2.5.3</maven.release.plugin.version>
    <maven.resources.plugin.version>2.7</maven.resources.plugin.version>
    <maven.site.plugin.version>3.4</maven.site.plugin.version>
    <maven.surefire.plugin.version>3.1.0</maven.surefire.plugin.version>
    <maven.war.plugin.version>2.5</maven.war.plugin.version>
    <resilience4j.spring3.version>2.0.2</resilience4j.spring3.version>
    <skip.unit.tests>false</skip.unit.tests>
    <spring-cloud.version>2023.0.3</spring-cloud.version>
    <springdoc.openapi.version>2.3.0</springdoc.openapi.version>
    <version.jacoco>0.8.8</version.jacoco>
    <wiremock.version>3.5.4</wiremock.version>
  </properties>

While starting up application, I am getting following stack trace :

2024-09-12 13:11:56.970 | [main] | ERROR | traceId:  | o.s.boot.SpringApplication - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Receiver class io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder$NettyTransportFactory does not define or inherit an implementation of the resolved method 'abstract java.util.Collection getSupportedSocketAddressTypes()' of interface io.grpc.internal.ClientTransportFactory.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1232)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:950)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625)
    at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1358)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1347)
    at com.sams.payment.settlement.AppInitializer.main(AppInitializer.java:15)
Caused by: java.lang.AbstractMethodError: Receiver class io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder$NettyTransportFactory does not define or inherit an implementation of the resolved method 'abstract java.util.Collection getSupportedSocketAddressTypes()' of interface io.grpc.internal.ClientTransportFactory.
    at io.grpc.internal.CallCredentialsApplyingTransportFactory.getSupportedSocketAddressTypes(CallCredentialsApplyingTransportFactory.java:80)
    at io.grpc.internal.ManagedChannelImpl.<init>(ManagedChannelImpl.java:640)
    at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:672)
    at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:260)
    at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:462)
    at com.google.api.gax.grpc.ChannelPool.<init>(ChannelPool.java:107)
    at com.google.api.gax.grpc.ChannelPool.create(ChannelPool.java:85)
    at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:256)
    at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:250)
    at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:226)
    at com.google.cloud.spanner.v1.stub.GrpcSpannerStub.create(GrpcSpannerStub.java:243)
    at com.google.cloud.spanner.spi.v1.GapicSpannerRpc.<init>(GapicSpannerRpc.java:384)
    at com.google.cloud.spanner.spi.v1.GapicSpannerRpc.<init>(GapicSpannerRpc.java:275)
    at com.google.cloud.spanner.SpannerOptions$DefaultSpannerRpcFactory.create(SpannerOptions.java:508)
    at com.google.cloud.spanner.SpannerOptions$DefaultSpannerRpcFactory.create(SpannerOptions.java:503)
    at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:602)
    at com.google.cloud.spanner.SpannerOptions.getSpannerRpcV1(SpannerOptions.java:1742)
    at com.google.cloud.spanner.SpannerImpl.<init>(SpannerImpl.java:149)
    at com.google.cloud.spanner.SpannerOptions$DefaultSpannerFactory.create(SpannerOptions.java:498)
    at com.google.cloud.spanner.SpannerOptions$DefaultSpannerFactory.create(SpannerOptions.java:493)
    at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:582)
    at com.google.cloud.spanner.connection.SpannerPool.createSpanner(SpannerPool.java:392)
    at com.google.cloud.spanner.connection.SpannerPool.getSpanner(SpannerPool.java:320)
    at com.google.cloud.spanner.connection.ConnectionImpl.<init>(ConnectionImpl.java:292)
    at com.google.cloud.spanner.connection.ConnectionOptions.getConnection(ConnectionOptions.java:1352)
    at com.google.cloud.spanner.jdbc.AbstractJdbcConnection.<init>(AbstractJdbcConnection.java:64)
    at com.google.cloud.spanner.jdbc.JdbcConnection.<init>(JdbcConnection.java:97)
    at com.google.cloud.spanner.jdbc.JdbcDriver.connect(JdbcDriver.java:219)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:359)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:470)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:100)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:428)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:61)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:276)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:107)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:129)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215)
    at org.hibernate.boot.model.relational.Database.<init>(Database.java:45)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:223)
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:191)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:170)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1432)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1503)
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769)
    ... 16 common frames omitted

I have already tried using different version of google-cloud-spanner-hibernate-dialect and google-cloud-spanner-jdbc but still getting same error during application initialization.

Can someone help to resolve this issue.


Solution

  • Working Application

    I've copy-pasted the sample application from the Spanner Hibernate dialect to a separate repository, and combined that with your dependencies and put that sample here: https://github.com/olavloite/test-hibernate-dependency-conflict

    My observations based on that:

    1. I needed to add a dependency management piece for OpenTelemetry to fix dependency conflicts for OpenTelemetry. That is however unrelated to the error that you saw. I also needed to comment out the micrometer-tracing-bridge-otel dependency for the same reason, but this should also be unrelated to your issue.
    2. After that, the application works. Run it with mvn spring-boot:run.

    You can clone the above sample application from GitHub with the command:

    git clone [email protected]:olavloite/test-hibernate-dependency-conflict.git
    

    Possible Causes

    However, running mvn dependency:tree on this application gives the following result:

    [INFO] Scanning for projects...
    [INFO] 
    [INFO] -------------------< org.example:dependencies-test >--------------------
    [INFO] Building dependencies-test 1.0-SNAPSHOT
    [INFO]   from pom.xml
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] 
    [INFO] --- dependency:3.6.1:tree (default-cli) @ dependencies-test ---
    [INFO] org.example:dependencies-test:jar:1.0-SNAPSHOT
    [INFO] +- org.testcontainers:testcontainers:jar:1.19.3:compile
    [INFO] |  +- junit:junit:jar:4.13.2:compile
    [INFO] |  |  \- org.hamcrest:hamcrest-core:jar:2.2:compile
    [INFO] |  +- org.slf4j:slf4j-api:jar:2.0.9:compile
    [INFO] |  +- org.apache.commons:commons-compress:jar:1.24.0:compile
    [INFO] |  +- org.rnorth.duct-tape:duct-tape:jar:1.0.8:compile
    [INFO] |  |  \- org.jetbrains:annotations:jar:17.0.0:compile
    [INFO] |  +- com.github.docker-java:docker-java-api:jar:3.3.4:compile
    [INFO] |  |  \- com.fasterxml.jackson.core:jackson-annotations:jar:2.15.3:compile
    [INFO] |  \- com.github.docker-java:docker-java-transport-zerodep:jar:3.3.4:compile
    [INFO] |     +- com.github.docker-java:docker-java-transport:jar:3.3.4:compile
    [INFO] |     \- net.java.dev.jna:jna:jar:5.13.0:compile
    [INFO] +- org.springframework.boot:spring-boot-starter-webflux:jar:3.2.1:compile
    [INFO] |  +- org.springframework.boot:spring-boot-starter:jar:3.2.1:compile
    [INFO] |  |  +- org.springframework.boot:spring-boot:jar:3.2.1:compile
    [INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:3.2.1:compile
    [INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:3.2.1:compile
    [INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.4.14:compile
    [INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.4.14:compile
    [INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.21.1:compile
    [INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.21.1:compile
    [INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:2.0.9:compile
    [INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile
    [INFO] |  |  \- org.yaml:snakeyaml:jar:2.2:compile
    [INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:3.2.1:compile
    [INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.15.3:compile
    [INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.15.3:compile
    [INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.15.3:compile
    [INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.15.3:compile
    [INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.15.3:compile
    [INFO] |  +- org.springframework.boot:spring-boot-starter-reactor-netty:jar:3.2.1:compile
    [INFO] |  |  \- io.projectreactor.netty:reactor-netty-http:jar:1.1.14:compile
    [INFO] |  |     +- io.netty:netty-codec-http:jar:4.1.104.Final:compile
    [INFO] |  |     |  +- io.netty:netty-common:jar:4.1.104.Final:compile
    [INFO] |  |     |  +- io.netty:netty-buffer:jar:4.1.104.Final:compile
    [INFO] |  |     |  +- io.netty:netty-transport:jar:4.1.104.Final:compile
    [INFO] |  |     |  +- io.netty:netty-codec:jar:4.1.104.Final:compile
    [INFO] |  |     |  \- io.netty:netty-handler:jar:4.1.104.Final:compile
    [INFO] |  |     +- io.netty:netty-codec-http2:jar:4.1.104.Final:compile
    [INFO] |  |     +- io.netty:netty-resolver-dns:jar:4.1.104.Final:compile
    [INFO] |  |     |  +- io.netty:netty-resolver:jar:4.1.104.Final:compile
    [INFO] |  |     |  \- io.netty:netty-codec-dns:jar:4.1.104.Final:compile
    [INFO] |  |     +- io.netty:netty-resolver-dns-native-macos:jar:osx-x86_64:4.1.104.Final:compile
    [INFO] |  |     |  \- io.netty:netty-resolver-dns-classes-macos:jar:4.1.104.Final:compile
    [INFO] |  |     +- io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.104.Final:compile
    [INFO] |  |     |  +- io.netty:netty-transport-native-unix-common:jar:4.1.104.Final:compile
    [INFO] |  |     |  \- io.netty:netty-transport-classes-epoll:jar:4.1.104.Final:compile
    [INFO] |  |     \- io.projectreactor.netty:reactor-netty-core:jar:1.1.14:compile
    [INFO] |  |        \- io.netty:netty-handler-proxy:jar:4.1.104.Final:compile
    [INFO] |  |           \- io.netty:netty-codec-socks:jar:4.1.104.Final:compile
    [INFO] |  +- org.springframework:spring-web:jar:6.1.2:compile
    [INFO] |  |  \- org.springframework:spring-beans:jar:6.1.2:compile
    [INFO] |  \- org.springframework:spring-webflux:jar:6.1.2:compile
    [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:3.2.1:test
    [INFO] |  +- org.springframework.boot:spring-boot-test:jar:3.2.1:test
    [INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.2.1:test
    [INFO] |  +- com.jayway.jsonpath:json-path:jar:2.8.0:test
    [INFO] |  +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.1:compile
    [INFO] |  |  \- jakarta.activation:jakarta.activation-api:jar:2.1.2:compile
    [INFO] |  +- net.minidev:json-smart:jar:2.5.0:test
    [INFO] |  |  \- net.minidev:accessors-smart:jar:2.5.0:test
    [INFO] |  |     \- org.ow2.asm:asm:jar:9.3:test
    [INFO] |  +- org.assertj:assertj-core:jar:3.24.2:test
    [INFO] |  |  \- net.bytebuddy:byte-buddy:jar:1.14.10:runtime
    [INFO] |  +- org.awaitility:awaitility:jar:4.2.0:test
    [INFO] |  +- org.hamcrest:hamcrest:jar:2.2:compile
    [INFO] |  +- org.junit.jupiter:junit-jupiter:jar:5.10.1:test
    [INFO] |  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.10.1:test
    [INFO] |  |  |  +- org.opentest4j:opentest4j:jar:1.3.0:test
    [INFO] |  |  |  +- org.junit.platform:junit-platform-commons:jar:1.10.1:test
    [INFO] |  |  |  \- org.apiguardian:apiguardian-api:jar:1.1.2:test
    [INFO] |  |  +- org.junit.jupiter:junit-jupiter-params:jar:5.10.1:test
    [INFO] |  |  \- org.junit.jupiter:junit-jupiter-engine:jar:5.10.1:test
    [INFO] |  |     \- org.junit.platform:junit-platform-engine:jar:1.10.1:test
    [INFO] |  +- org.mockito:mockito-core:jar:5.7.0:test
    [INFO] |  |  +- net.bytebuddy:byte-buddy-agent:jar:1.14.10:test
    [INFO] |  |  \- org.objenesis:objenesis:jar:3.3:test
    [INFO] |  +- org.mockito:mockito-junit-jupiter:jar:5.7.0:test
    [INFO] |  +- org.skyscreamer:jsonassert:jar:1.5.1:test
    [INFO] |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
    [INFO] |  +- org.springframework:spring-core:jar:6.1.2:compile
    [INFO] |  |  \- org.springframework:spring-jcl:jar:6.1.2:compile
    [INFO] |  +- org.springframework:spring-test:jar:6.1.2:test
    [INFO] |  \- org.xmlunit:xmlunit-core:jar:2.9.1:test
    [INFO] +- io.projectreactor:reactor-test:jar:3.6.1:test
    [INFO] |  \- io.projectreactor:reactor-core:jar:3.6.1:compile
    [INFO] |     \- org.reactivestreams:reactive-streams:jar:1.0.4:compile
    [INFO] +- org.projectlombok:lombok:jar:1.18.30:compile
    [INFO] +- org.springframework.boot:spring-boot-starter-actuator:jar:3.2.1:compile
    [INFO] |  +- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:3.2.1:compile
    [INFO] |  |  \- org.springframework.boot:spring-boot-actuator:jar:3.2.1:compile
    [INFO] |  +- io.micrometer:micrometer-observation:jar:1.12.1:compile
    [INFO] |  |  \- io.micrometer:micrometer-commons:jar:1.12.1:compile
    [INFO] |  \- io.micrometer:micrometer-jakarta9:jar:1.12.1:compile
    [INFO] +- org.springframework.boot:spring-boot-starter-aop:jar:3.2.1:compile
    [INFO] |  +- org.springframework:spring-aop:jar:6.1.2:compile
    [INFO] |  \- org.aspectj:aspectjweaver:jar:1.9.21:compile
    [INFO] +- io.micrometer:micrometer-registry-prometheus:jar:1.12.1:compile
    [INFO] |  +- io.micrometer:micrometer-core:jar:1.12.1:compile
    [INFO] |  |  +- org.hdrhistogram:HdrHistogram:jar:2.1.12:runtime
    [INFO] |  |  \- org.latencyutils:LatencyUtils:jar:2.0.3:runtime
    [INFO] |  \- io.prometheus:simpleclient_common:jar:0.16.0:compile
    [INFO] |     \- io.prometheus:simpleclient:jar:0.16.0:compile
    [INFO] |        +- io.prometheus:simpleclient_tracer_otel:jar:0.16.0:compile
    [INFO] |        |  \- io.prometheus:simpleclient_tracer_common:jar:0.16.0:compile
    [INFO] |        \- io.prometheus:simpleclient_tracer_otel_agent:jar:0.16.0:compile
    [INFO] +- org.springdoc:springdoc-openapi-starter-webflux-ui:jar:2.3.0:compile
    [INFO] |  +- org.springdoc:springdoc-openapi-starter-webflux-api:jar:2.3.0:compile
    [INFO] |  |  \- org.springdoc:springdoc-openapi-starter-common:jar:2.3.0:compile
    [INFO] |  |     \- io.swagger.core.v3:swagger-core-jakarta:jar:2.2.19:compile
    [INFO] |  |        +- io.swagger.core.v3:swagger-annotations-jakarta:jar:2.2.19:compile
    [INFO] |  |        +- io.swagger.core.v3:swagger-models-jakarta:jar:2.2.19:compile
    [INFO] |  |        +- jakarta.validation:jakarta.validation-api:jar:3.0.2:compile
    [INFO] |  |        \- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.15.3:compile
    [INFO] |  \- org.webjars:swagger-ui:jar:5.10.3:compile
    [INFO] +- io.github.resilience4j:resilience4j-spring-boot3:jar:2.0.2:compile
    [INFO] |  +- io.github.resilience4j:resilience4j-spring6:jar:2.1.0:compile
    [INFO] |  |  +- io.github.resilience4j:resilience4j-annotations:jar:2.1.0:compile
    [INFO] |  |  +- io.github.resilience4j:resilience4j-consumer:jar:2.1.0:compile
    [INFO] |  |  |  \- io.github.resilience4j:resilience4j-circularbuffer:jar:2.1.0:runtime
    [INFO] |  |  \- io.github.resilience4j:resilience4j-framework-common:jar:2.1.0:compile
    [INFO] |  \- io.github.resilience4j:resilience4j-micrometer:jar:2.1.0:runtime
    [INFO] +- io.github.resilience4j:resilience4j-reactor:jar:2.0.2:compile
    [INFO] |  +- io.github.resilience4j:resilience4j-circuitbreaker:jar:2.1.0:compile
    [INFO] |  |  \- io.github.resilience4j:resilience4j-core:jar:2.1.0:compile
    [INFO] |  +- io.github.resilience4j:resilience4j-ratelimiter:jar:2.1.0:compile
    [INFO] |  +- io.github.resilience4j:resilience4j-timelimiter:jar:2.1.0:compile
    [INFO] |  +- io.github.resilience4j:resilience4j-bulkhead:jar:2.1.0:compile
    [INFO] |  \- io.github.resilience4j:resilience4j-retry:jar:2.1.0:compile
    [INFO] +- org.wiremock:wiremock-standalone:jar:3.5.4:test
    [INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:3.2.1:compile
    [INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:3.2.1:compile
    [INFO] |  |  +- com.zaxxer:HikariCP:jar:5.0.1:compile
    [INFO] |  |  \- org.springframework:spring-jdbc:jar:6.1.2:compile
    [INFO] |  +- org.hibernate.orm:hibernate-core:jar:6.4.1.Final:compile
    [INFO] |  |  +- jakarta.persistence:jakarta.persistence-api:jar:3.1.0:compile
    [INFO] |  |  +- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
    [INFO] |  |  +- org.hibernate.common:hibernate-commons-annotations:jar:6.0.6.Final:runtime
    [INFO] |  |  +- io.smallrye:jandex:jar:3.1.2:runtime
    [INFO] |  |  +- com.fasterxml:classmate:jar:1.6.0:runtime
    [INFO] |  |  +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.4:runtime
    [INFO] |  |  |  \- org.glassfish.jaxb:jaxb-core:jar:4.0.4:runtime
    [INFO] |  |  |     +- org.eclipse.angus:angus-activation:jar:2.0.1:runtime
    [INFO] |  |  |     +- org.glassfish.jaxb:txw2:jar:4.0.4:runtime
    [INFO] |  |  |     \- com.sun.istack:istack-commons-runtime:jar:4.1.2:runtime
    [INFO] |  |  +- jakarta.inject:jakarta.inject-api:jar:2.0.1:runtime
    [INFO] |  |  \- org.antlr:antlr4-runtime:jar:4.13.0:compile
    [INFO] |  +- org.springframework.data:spring-data-jpa:jar:3.2.1:compile
    [INFO] |  |  +- org.springframework.data:spring-data-commons:jar:3.2.1:compile
    [INFO] |  |  +- org.springframework:spring-orm:jar:6.1.2:compile
    [INFO] |  |  +- org.springframework:spring-context:jar:6.1.2:compile
    [INFO] |  |  |  \- org.springframework:spring-expression:jar:6.1.2:compile
    [INFO] |  |  \- org.springframework:spring-tx:jar:6.1.2:compile
    [INFO] |  \- org.springframework:spring-aspects:jar:6.1.2:compile
    [INFO] +- com.google.cloud:google-cloud-spanner-hibernate-dialect:jar:3.4.0:compile
    [INFO] |  +- org.jboss.logging:jboss-logging:jar:3.5.3.Final:compile
    [INFO] |  +- com.google.cloud:google-cloud-spanner-hibernate-tools:jar:3.4.0:compile
    [INFO] |  \- org.apache.commons:commons-lang3:jar:3.13.0:compile
    [INFO] \- com.google.cloud:google-cloud-spanner-jdbc:jar:2.20.1:compile
    [INFO]    +- com.google.http-client:google-http-client:jar:1.44.2:compile
    [INFO]    +- org.apache.httpcomponents:httpclient:jar:4.5.14:compile
    [INFO]    +- org.apache.httpcomponents:httpcore:jar:4.4.16:compile
    [INFO]    +- com.google.errorprone:error_prone_annotations:jar:2.28.0:compile
    [INFO]    +- com.google.j2objc:j2objc-annotations:jar:3.0.0:compile
    [INFO]    +- io.grpc:grpc-context:jar:1.62.2:compile
    [INFO]    +- io.opencensus:opencensus-api:jar:0.31.1:compile
    [INFO]    +- io.opencensus:opencensus-contrib-http-util:jar:0.31.1:compile
    [INFO]    +- io.grpc:grpc-api:jar:1.62.2:compile
    [INFO]    +- com.google.cloud:google-cloud-core-grpc:jar:2.40.0:compile
    [INFO]    +- com.google.api:gax-grpc:jar:2.50.0:compile
    [INFO]    +- com.google.api.grpc:proto-google-common-protos:jar:2.41.0:compile
    [INFO]    +- com.google.api:gax:jar:2.50.0:runtime
    [INFO]    +- org.threeten:threetenbp:jar:1.6.9:compile
    [INFO]    +- com.google.cloud:google-cloud-spanner:jar:6.71.0:compile
    [INFO]    +- com.google.cloud:grpc-gcp:jar:1.6.1:compile
    [INFO]    +- io.grpc:grpc-auth:jar:1.62.2:compile
    [INFO]    +- io.grpc:grpc-inprocess:jar:1.62.2:compile
    [INFO]    +- io.grpc:grpc-core:jar:1.62.2:compile
    [INFO]    +- com.google.android:annotations:jar:4.1.1.4:runtime
    [INFO]    +- org.codehaus.mojo:animal-sniffer-annotations:jar:1.23:runtime
    [INFO]    +- io.perfmark:perfmark-api:jar:0.27.0:runtime
    [INFO]    +- io.grpc:grpc-util:jar:1.62.2:runtime
    [INFO]    +- io.grpc:grpc-protobuf:jar:1.62.2:compile
    [INFO]    +- io.grpc:grpc-protobuf-lite:jar:1.62.2:runtime
    [INFO]    +- io.grpc:grpc-stub:jar:1.62.2:compile
    [INFO]    +- com.google.auto.value:auto-value-annotations:jar:1.10.4:compile
    [INFO]    +- com.google.protobuf:protobuf-java-util:jar:3.25.3:compile
    [INFO]    +- com.google.api.grpc:proto-google-cloud-spanner-executor-v1:jar:6.71.0:compile
    [INFO]    +- com.google.api.grpc:grpc-google-common-protos:jar:2.41.0:compile
    [INFO]    +- com.google.guava:failureaccess:jar:1.0.2:compile
    [INFO]    +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
    [INFO]    +- org.checkerframework:checker-qual:jar:3.44.0:compile
    [INFO]    +- com.google.api.grpc:proto-google-iam-v1:jar:1.36.0:compile
    [INFO]    +- com.google.http-client:google-http-client-gson:jar:1.44.2:compile
    [INFO]    +- io.opencensus:opencensus-contrib-grpc-util:jar:0.31.1:compile
    [INFO]    +- io.opentelemetry:opentelemetry-context:jar:1.42.1:compile
    [INFO]    +- io.opentelemetry:opentelemetry-sdk-common:jar:1.42.1:compile
    [INFO]    +- io.opentelemetry:opentelemetry-sdk-metrics:jar:1.42.1:compile
    [INFO]    +- io.opentelemetry:opentelemetry-api-incubator:jar:1.39.0-alpha:runtime
    [INFO]    +- com.google.cloud:google-cloud-monitoring:jar:3.38.0:compile
    [INFO]    +- io.grpc:grpc-grpclb:jar:1.62.2:compile
    [INFO]    +- org.conscrypt:conscrypt-openjdk-uber:jar:2.5.2:compile
    [INFO]    +- io.grpc:grpc-xds:jar:1.62.2:runtime
    [INFO]    +- io.opencensus:opencensus-proto:jar:0.2.0:runtime
    [INFO]    +- io.grpc:grpc-services:jar:1.62.2:runtime
    [INFO]    +- com.google.re2j:re2j:jar:1.7:runtime
    [INFO]    +- commons-codec:commons-codec:jar:1.16.0:compile
    [INFO]    +- com.google.api.grpc:proto-google-cloud-monitoring-v3:jar:3.38.0:compile
    [INFO]    +- com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:jar:6.71.0:compile
    [INFO]    +- com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:jar:6.71.0:compile
    [INFO]    +- com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:jar:6.71.0:compile
    [INFO]    +- com.google.api.grpc:grpc-google-cloud-spanner-v1:jar:6.71.0:compile
    [INFO]    +- com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:jar:6.71.0:compile
    [INFO]    +- com.google.api:gax-httpjson:jar:2.50.0:compile
    [INFO]    +- com.google.code.gson:gson:jar:2.10.1:compile
    [INFO]    +- io.grpc:grpc-googleapis:jar:1.62.2:runtime
    [INFO]    +- io.grpc:grpc-rls:jar:1.62.2:runtime
    [INFO]    +- javax.annotation:javax.annotation-api:jar:1.3.2:compile
    [INFO]    +- io.grpc:grpc-alts:jar:1.62.2:compile
    [INFO]    +- com.google.protobuf:protobuf-java:jar:3.25.3:compile
    [INFO]    +- com.google.guava:guava:jar:33.1.0-jre:compile
    [INFO]    +- io.grpc:grpc-netty-shaded:jar:1.62.2:compile
    [INFO]    +- com.google.api:api-common:jar:2.33.0:compile
    [INFO]    +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
    [INFO]    +- com.google.auth:google-auth-library-oauth2-http:jar:1.23.0:compile
    [INFO]    +- com.google.auth:google-auth-library-credentials:jar:1.23.0:compile
    [INFO]    +- com.google.cloud:google-cloud-core:jar:2.40.0:compile
    [INFO]    +- com.google.api.grpc:proto-google-cloud-spanner-v1:jar:6.71.0:compile
    [INFO]    \- io.opentelemetry:opentelemetry-api:jar:1.42.1:compile
    

    This indicates that spring-boot-starter-webflux includes spring-boot-starter-reactor-netty, which again includes multiple Netty dependencies. In addition, the Spanner JDBC driver includes io.grpc:grpc-netty-shaded:jar:1.62.2:compile. My guess is that the spring-boot-starter-reactor-netty dependency is the one that is causing the conflict.

    Possible actions:

    1. Exclude spring-boot-starter-reactor-netty if possible.
    2. Are you building a fat-jar (jar-with-depencies / shaded jar)? If so: Don't. They are always prone to dependency issues, as conflicting dependencies will just overwrite each other. Run your application with mvn spring-boot:run instead of building a fat jar to check if it works.