Micronaut 3集成Google Secret Manager初始化报错解决方案咨询
问题根因
该报错是版本不兼容导致:Micronaut 3.x的核心Bean初始化逻辑和2.x版本有差异,你沿用了适配2.x的micronaut-gcp 3.5.0版本,同时io.micronaut.library 2.0.4插件默认拉取的gRPC依赖和Secret Manager客户端要求的版本不匹配,才会触发getTransportChannel() called when needsExecutor() is true异常。
具体解决步骤
1. 修正依赖版本匹配
在Kotlin DSL的build.gradle.kts中显式指定适配Micronaut 3.0.1的micronaut-gcp版本,强制引入对应BOM对齐所有子依赖:
plugins { id("io.micronaut.library") version "2.0.4" // 其余原有插件保持不变 } micronaut { version("3.0.1") // 显式导入适配Micronaut 3.x的gcp模块BOM importBom("io.micronaut.gcp:micronaut-gcp-bom:4.0.0") runtime("netty") testRuntime("junit5") } dependencies { implementation("io.micronaut.gcp:micronaut-gcp-secret-manager") // 其余原有依赖保持不变 }
2. 补全bootstrap.yml配置
Micronaut 3.x的Secret Manager模块需要显式开启开关,调整bootstrap.yml配置如下:
micronaut: config-client: enabled: true gcp: secret-manager: enabled: true keys: - MY_SECRET
3. 本地测试适配
如果是本地运行测试,需要先通过gcloud命令获取默认身份凭证,确保有权限访问对应Google Cloud项目的Secret Manager:
gcloud auth application-default login
调整完成后重新运行测试,原有@Value注入密钥的原生逻辑即可正常运行,不需要使用环境变量注入的临时方案。
内容的提问来源于stack exchange,提问作者ab_zmi
相关产品推荐
相关产品推荐

