Spring Boot添加Actuator依赖后启动报错:ClassNotFoundException: com.mongodb.event.ConnectionPoolCreatedEvent
问题解决:添加Actuator后Spring Boot应用无法启动(使用mongo-java-driver)
问题场景
使用mongo-java-driver而非spring-boot-starter-data-mongodb连接MongoDB时应用正常运行,添加spring-boot-starter-actuator依赖后启动失败,核心报错为java.lang.ClassNotFoundException: com.mongodb.event.ConnectionPoolCreatedEvent。
原因分析
Spring Boot Actuator的Mongo指标自动配置类MongoMetricsAutoConfiguration会在检测到Mongo驱动时自动创建连接池指标Bean,但你手动指定的mongo-java-driver:3.12.11与Spring Boot 2.6.2内置依赖管理的Mongo驱动版本不兼容,导致自动配置所需的ConnectionPoolCreatedEvent类缺失,进而触发Bean创建异常。
解决方案
方案1:使用Spring Boot管理的Mongo驱动版本
修改build.gradle,移除mongo-java-driver的手动版本指定,让Spring Boot的依赖管理自动适配兼容版本:
plugins { id 'org.springframework.boot' version '2.6.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java-library' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' repositories { mavenCentral() } dependencies { // 移除手动指定的version,由Spring Boot自动管理兼容版本 implementation group: 'org.mongodb', name: 'mongo-java-driver' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-actuator' } tasks.named('test') { useJUnitPlatform() }
方案2:禁用Mongo指标自动配置
若不需要Actuator收集Mongo连接池指标,可在启动类中排除对应的自动配置类:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.metrics.mongo.MongoMetricsAutoConfiguration; @SpringBootApplication(exclude = MongoMetricsAutoConfiguration.class) public class MongoTestApplication { public static void main(String[] args) { SpringApplication.run(MongoTestApplication.class, args); } }
补充说明
优先推荐方案1,利用Spring Boot的依赖管理机制可有效避免版本冲突问题;若必须使用指定版本的mongo-java-driver,需确保其版本与Spring Boot Actuator依赖的Micrometer版本兼容。
内容的提问来源于stack exchange,提问作者Aln
相关产品推荐
相关产品推荐

