Mongock配置报错:缺少ConnectionDriver Bean如何解决?
解决SpringBoot配置Mongock启动时缺少ConnectionDriver Bean的问题
问题原因
Mongock 5.x版本的自动配置依赖Spring Data MongoDB的基础组件,若依赖不全或自动配置未触发,Spring容器无法自动生成io.mongock.driver.api.driver.ConnectionDriver类型的Bean,导致启动失败。
解决方案
1. 补全必要依赖
确保pom.xml中包含Spring Data MongoDB的starter依赖,Mongock驱动需要依赖它获取Mongo连接资源。完整依赖示例:
<dependencies> <!-- Spring Data MongoDB Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <!-- Mongock SpringBoot Runner --> <dependency> <groupId>io.mongock</groupId> <artifactId>mongock-springboot</artifactId> <version>5.2.2</version> </dependency> <!-- Mongock MongoDB SpringData V3 Driver --> <dependency> <groupId>io.mongock</groupId> <artifactId>mongodb-springdata-v3-driver</artifactId> <version>5.2.2</version> </dependency> </dependencies>
2. 验证MongoDB连接配置
确保application.yml中MongoDB的连接配置正确,Mongock驱动需要有效的Mongo连接才能初始化:
spring: data: mongodb: uri: mongodb://localhost:27017/your-database-name mongock: enabled: true migration-scan-package: com.your.package.migrations # 替换为你的迁移类所在包
3. 手动注册ConnectionDriver Bean(若自动配置失效)
如果Spring自动配置未生成ConnectionDriver,可手动创建配置类注册Bean:
import io.mongock.driver.mongodb.springdata.v3.driver.MongoSpringDataV3Driver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoTemplate; @Configuration public class MongockDriverConfig { @Bean public MongoSpringDataV3Driver mongockConnectionDriver(MongoTemplate mongoTemplate) { return MongoSpringDataV3Driver.withDefaultLock(mongoTemplate); } }
4. 确认@EnableMongock注解位置
确保@EnableMongock注解添加在SpringBoot启动类上,且启动类所在包能扫描到迁移类和配置类:
import io.mongock.runner.springboot.EnableMongock; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableMongock public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }
内容的提问来源于stack exchange,提问作者Piotr
相关产品推荐
相关产品推荐

