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

Quarkus应用注入列表型动态Map配置,smallrye-config是否支持?

smallrye-config 完全支持你期望的 YAML 配置格式注入,无需使用分号拼接的配置形式再做后置处理,具体实现步骤如下:

1. 定义配置映射接口

使用 Quarkus 提供的 @ConfigMapping 注解定义配置结构,直接匹配你给出的 YAML 格式:

import io.smallrye.config.ConfigMapping;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

@ConfigMapping(prefix = "app")
public interface AppConfig {
    // 直接匹配YAML中的数组结构,支持任意数量的动态key
    List<ExampleEntry> example();

    interface ExampleEntry {
        String key();
        List<String> values();
    }

    // 内置默认方法直接转换为你需要的Map结构,无需额外处理
    default Map<String, List<String>> getExampleAsMap() {
        return example().stream()
                .collect(Collectors.toMap(ExampleEntry::key, ExampleEntry::values));
    }
}

2. 注入使用

直接在需要使用配置的类中注入上述配置接口即可:

import jakarta.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class ExampleService {
    private final AppConfig appConfig;

    // 构造方法注入
    public ExampleService(AppConfig appConfig) {
        this.appConfig = appConfig;
    }

    public void doSomething() {
        // 直接获取转换后的动态Map结构
        Map<String, List<String>> exampleMap = appConfig.getExampleAsMap();
        // 示例:获取KeyExample对应的配置列表
        List<String> keyExampleValues = exampleMap.get("KeyExample");
    }
}

注意事项

  • 正常创建的 Quarkus 项目默认已集成 smallrye-config 能力,无需额外引入依赖
  • 所有配置解析逻辑由 smallrye-config 原生实现,不需要你手动处理配置加载、格式转换的操作
  • 新增配置项时只需要修改YAML文件,不需要调整配置类代码,完全支持动态key扩展

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:02