在 io.mongock.runner.springboot.config 中找不到方法 getBuilder。MongockContext 需要类型为“ConnectionDriver”的 bean

Pio*_*otr 5 java mongodb spring-boot mongock

我在为我的项目正确配置 mongock 时遇到问题。

我已添加到 pom.xml 依赖项:

  <dependencies>
    <dependency>
        <groupId>io.mongock</groupId>
        <artifactId>mongock-springboot</artifactId>
        <version>5.2.2</version>
    </dependency>
    <dependency>
        <groupId>io.mongock</groupId>
        <artifactId>mongodb-springdata-v3-driver</artifactId>
        <version>5.2.2</version>
    </dependency>
    ...
  </dependencies>
  <dependencyManagement>
     <dependencies>
        <dependency>
            <groupId>io.mongock</groupId>
            <artifactId>mongock-driver-mongodb-bom</artifactId>
            <version>5.2.2</version>
            <type>pom</type>
        </dependency>
        ...
    </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

我在ApplicationClass上添加了注释:@EnableMongock

在 application.yml 中我添加了配置:

mongock:
  migration-scan-package:
    - com.test.project.config.dbmigrations
  enabled: true
Run Code Online (Sandbox Code Playgroud)

文档说这个设置应该足够了,但是当我运行应用程序时出现错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of method getBuilder in io.mongock.runner.springboot.config.MongockContext required a bean of type 'io.mongock.driver.api.driver.ConnectionDriver' that could not be found.


Action:

Consider defining a bean of type 'io.mongock.driver.api.driver.ConnectionDriver' in your configuration.
Run Code Online (Sandbox Code Playgroud)

你知道如何修复它吗?提前致谢。

小智 5

如果您使用的是 spring 3.xx 版本,则文档中提到的依赖项不正确。使用如下所示的依赖关系以使自动配置正常工作:

<dependency>
  <groupId>io.mongock</groupId>
  <artifactId>mongock-bom</artifactId>
  <version>5.2.4</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>
<dependency>
  <groupId>io.mongock</groupId>
  <artifactId>mongock-springboot-v3</artifactId>
  <version>5.2.4</version>
</dependency>
<dependency>
  <groupId>io.mongock</groupId>
  <artifactId>mongodb-springdata-v4-driver</artifactId>
  <version>5.2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

发布此内容,您的配置application.yml将起作用


小智 2

您可以尝试制作一个安装 bean。

    @Bean
    public MongockApplicationRunner mongockApplicationRunner(
            ApplicationContext springContext,
            MongoTemplate mongoTemplate) {
        return MongockSpringboot.builder()
                .setDriver(SpringDataMongoV3Driver.withDefaultLock(mongoTemplate))
                .addMigrationScanPackage("your_changeLog_package_path")
                .setSpringContext(springContext)
                .buildApplicationRunner();
    }
Run Code Online (Sandbox Code Playgroud)