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

Spring Boot @ConfigurationProperties读取yml List配置报错

问题原因

报错的核心触发点是application.yml存在YAML语法错误:YAML语法强制要求配置键的冒号和值之间必须保留半角空格,你当前配置里的ip:123、path:xyz这类写法没有在冒号后加空格,导致Spring将ip:123 path:xyz整体识别为单个字符串,无法将其转换为Server类型对象,最终抛出无对应类型转换器的异常。
除此之外你的代码还有两处冗余问题:

  • Server类作为配置绑定的普通POJO,不需要加@Component注解注册为独立Spring Bean,多余的注解反而可能引发组件扫描冲突
  • ApplicationServer类已经加了@Component注解,不需要再在启动类上重复声明@EnableConfigurationProperties(ApplicationServer.class),二者选其一即可生效。
修复方案

1. 修正YAML配置语法

给所有配置项的冒号后补充空格,正确配置如下:

application:
  servers:
    - ip: 123
      path: xyz
    - ip: 456
      path: abc
    - ip: 789
      path: pqrs

2. 调整Server类代码

删除多余的@Component注解,保留普通Java类结构和getter/setter即可:

public class Server {
    private String ip;
    private String path;

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }
}

3. 清理重复注解

两种方式选一种即可:

  • 保留ApplicationServer类上的@Component,删除启动类上的@EnableConfigurationProperties(ApplicationServer.class)
  • 删除ApplicationServer类上的@Component,保留启动类上的@EnableConfigurationProperties(ApplicationServer.class)

修改完成后重启应用,就能正常读取并打印服务器列表配置,不会再出现类型转换报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:39:19