Spring Boot R2DBC和液基

bn31dyow  于 2023-02-16  发布在  Spring
关注(0)|答案(4)|浏览(145)

所以开始一个新的项目,我想使用r2dbc和webflux,一直在寻找有什么支持来处理数据库迁移.最后一个答案,我可以找到这里是从2019年7月,liquibase不支持R2DBC和谷歌搜索后,这似乎仍然是这样.
我们的梦想是在本地开发时使用r2dbc-h2,然后在生产时使用postgres之类的东西,Liquibase将在本地和生产中管理表结构。
一直试图谷歌一点如何这样的设置将看起来像,有很少的信息在那里。
我一直在考虑使用liquibase-maven-plugin设置表,但我不知道这是否适用于r2dbc-h2
所以有几个问题:

  • 如何设置,以便liquibase在迁移过程中使用常规驱动程序,而应用程序的其余部分使用React式驱动程序?
  • 如果使用maven插件,这可以与H2一起使用,或者我需要postgres作为一个docker吗?

这对我来说是个黑洞,有什么消息吗?

q8l4jmvw

q8l4jmvw1#

我认为在应用程序中使用2个驱动程序应该没有问题。由于liquibase使用标准的jdbc驱动程序,您可以配置它使用该驱动程序进行迁移,并配置r2dbc来运行应用程序。也许有些tweek需要做,但我会开始这样的东西:

spring:
  liquibase:
    url: jdbc:postgresql://localhost:5432/mydb
    user: postgres
  r2dbc:
    url: r2dbc:postgresql://localhost:5432/mydb
    username: postgres

并且包括两个库:

io.r2dbc:r2dbc-postgresql
org.postgresql:postgresql

如果有错误,请随时通知我们。
注意:为了测试,你也可以使用testcontainers或者嵌入的postgresql

8mmmxcuj

8mmmxcuj2#

作为对@bilak答案的补充,您必须向pom.xml添加以下依赖项:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

我也遇到了同样的问题,我已经将属性userURL添加到我的application.yml的Liquibase配置中,然后Spring开始声明一个类找不到,添加这个依赖项解决了这个问题

t40tm48m

t40tm48m3#

从带有Spring框架5.3.15的Sping Boot 2.6.3开始,以下配置适用于带有Liquibase的R2DBC

构建版本.gradle代码段
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-r2dbc'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'

    //database
    implementation "io.r2dbc:r2dbc-postgresql"
    runtimeOnly 'org.postgresql:postgresql'

    //liquibase
    implementation "org.liquibase:liquibase-core"
    runtimeOnly 'org.springframework:spring-jdbc'

    testImplementation 'io.projectreactor:reactor-test'
}
应用程序.yml
spring:
  main:
    web-application-type: REACTIVE
  r2dbc:
    url: r2dbc:postgresql://localhost/mydb
    username: postgres
  liquibase:
    url: jdbc:postgresql://localhost/mydb
h22fl7wq

h22fl7wq4#

集成所需的Maven依赖项

<dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-core</artifactId>
        <version>4.18.0</version>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-r2dbc</artifactId>
    </dependency>
    <dependency>
        <groupId>io.r2dbc</groupId>
        <artifactId>r2dbc-postgresql</artifactId>
        <version>${r2dbc-postgresql.version}</version>
    </dependency>

应用程序.yml配置

spring:
  r2dbc:
   username: postgres
   password: password1
   url: r2dbc:postgresql://localhost:5433
  liquibase:
   url: jdbc:postgresql://localhost:5433/postgres
   user: postgres
   password: password1
   change-log: liquibase-changeLog.xml

不需要其他任何东西,不需要手动Bean或任何其他配置

相关问题