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

Micronaut升级至4.0.0后启动失败:缺少DataSourceResolver Bean

Micronaut 4.0升级后「No bean of type [io.micronaut.jdbc.DataSourceResolver] exists」问题解决

问题根源

Micronaut 4.0对SQL模块做了架构重构,io.micronaut.jdbc.DataSourceResolver类已从原micronaut-jdbc模块迁移至micronaut-sql-core模块。此外,报错中出现的RepairingDataSourceMigrationRunner表明应用依赖数据库迁移组件(如Flyway/Liquibase),这类组件的Micronaut集成包也需要同步升级到适配4.0的版本,否则会触发依赖注入失败。

修复方案

1. 调整Gradle依赖

替换原有JDBC相关依赖,添加micronaut-sql-core,并确保所有SQL依赖版本统一为4.0.0:

// 移除原有的micronaut-jdbc依赖,用sql-core替代
implementation("io.micronaut.sql:micronaut-sql-core:4.0.0")
implementation("io.micronaut.sql:micronaut-jdbc-hikari:4.0.0")

// 若使用数据库迁移(如Flyway),需升级对应集成包到适配Micronaut 4的版本
// implementation("io.micronaut.flyway:micronaut-flyway:5.0.0")
// 若使用Liquibase则对应替换为:
// implementation("io.micronaut.liquibase:micronaut-liquibase:5.0.0")

2. 统一依赖版本

检查项目中所有SQL、数据库迁移相关依赖的版本,确保没有混合Micronaut 3.x和4.x的版本,版本不一致会引发兼容性问题。

3. 确认数据源配置

保证application.yaml中的数据源配置符合Micronaut 4.0规范,示例配置:

datasources:
  default:
    url: jdbc:mysql://localhost:3306/your_database
    driverClassName: com.mysql.cj.jdbc.Driver
    username: db_user
    password: db_pass
    hikari:
      maximum-pool-size: 10

补充说明

Micronaut 4.0将SQL核心功能与JDBC连接池实现解耦,核心接口(如DataSourceResolver)集中在micronaut-sql-core中,连接池(如Hikari)作为独立依赖引入。完成上述调整后,重新构建启动应用即可解决该注入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:02:27