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

Quarkus注入ConfigProperties对象时遇UnsatisfiedResolutionException问题

解决Quarkus配置映射注入失败问题

核心问题分析

你遇到的javax.enterprise.inject.UnsatisfiedResolutionException错误,主要由两个关键问题导致:

  1. 使用了错误的配置映射注解
  2. Service类存在语法错误

修复步骤

1. 替换配置注解为@ConfigMapping

Quarkus官方指南中的配置映射基于SmallRye Config的@ConfigMapping注解,而非@ConfigProperties。@ConfigProperties用于JavaBean风格的配置类,不适用于接口形式的配置聚合。

修改后的LiquidoConfig代码:

import io.smallrye.config.ConfigMapping;

@ConfigMapping(prefix = "liquido")
public interface LiquidoConfig {
    String frontendUrl();
    int loginLinkExpirationHours();

    Jwt jwt();
    
    interface Jwt {
        String secret();
        Long expirationSecs();
    }
}

2. 修复Service类的语法错误

你的SomeService类定义存在语法错误,将class误写为void,导致CDI容器无法识别该Bean,进而无法完成注入。修正后的代码:

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;

@ApplicationScoped
public class SomeService {
    @Inject
    LiquidoConfig config;
}

3. 验证配置文件

确保application.properties或application.yml中存在对应配置项,配置名使用kebab-case格式,会自动与接口中的camelCase方法映射:

# application.properties示例
liquido.frontend-url=http://your-frontend-domain.com
liquido.login-link-expiration-hours=24
liquido.jwt.secret=your-jwt-secret-key
liquido.jwt.expiration-secs=3600

4. 重新构建项目

Quarkus需要为配置接口生成代理类,执行以下命令重新编译运行:

./mvnw clean compile quarkus:dev

额外注意事项

  • 无需为LiquidoConfig添加@ApplicationScoped或@StaticInitSafe注解,配置映射由SmallRye Config负责管理,CDI会自动识别。
  • 确保项目依赖中包含SmallRye Config相关模块(Quarkus默认已集成,无需额外添加)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:13:30