You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot迁移报错NoSuchMethodError:HikariDataSource方法缺失

解决HikariDataSource.getMetricsTrackerFactory()方法找不到的问题

这个错误的核心原因是HikariCP版本与Spring Boot 2.5.6不兼容:

  • Spring Boot 2.5.x系列默认依赖的HikariCP版本是2.7.10,getMetricsTrackerFactory()方法是HikariCP 2.7.x版本新增的
  • 你当前使用的HikariCP 2.5.1版本过于老旧,不存在该方法,导致反射调用时抛出NoSuchMethodError

解决方案

1. 移除手动指定的HikariCP依赖

Spring Boot的spring-boot-starter-jdbc或spring-boot-starter-data-jpa已经内置了适配版本的HikariCP,无需手动在pom.xml或build.gradle中指定HikariCP版本。直接删除项目中手动引入的HikariCP 2.5.1依赖,让Spring Boot的依赖管理自动维护兼容版本。

2. 简化数据源配置(推荐)

Spring Boot支持自动配置HikariDataSource,完全不需要手动编写@Bean配置类。只需在application.yml或application.properties中配置数据源参数即可:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_db
    username: db_user
    password: db_pass
    driver-class-name: com.mysql.cj.jdbc.Driver
    hikari:
      # 可选:添加HikariCP自定义配置,比如连接池大小
      maximum-pool-size: 10
      connection-timeout: 30000

3. 若必须手动配置Bean

如果因特殊需求必须手动创建DataSource Bean,建议使用Spring Boot提供的HikariDataSourceBuilder而非通用的DataSourceBuilder,同时确保依赖版本正确:

@Primary
@Bean(destroyMethod = "close")
DataSource dataSource(DatasourceProperties datasourceProperties) {
    return HikariDataSourceBuilder.create()
            .url(datasourceProperties.getUrl())
            .username(datasourceProperties.getUsername())
            .password(datasourceProperties.getPassword())
            .driverClassName(datasourceProperties.getDriverClassName())
            .build();
}

验证依赖版本

可以通过Maven的dependency:tree命令或Gradle的dependencies命令,检查项目中实际生效的HikariCP版本,确认是Spring Boot适配的2.7.10版本。

内容的提问来源于stack exchange,提问作者TCH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:10:18