Spring Boot的application.properties如何配置Map嵌套POJO列表的属性
绑定失败原因
你的配置层级与Java类结构不匹配:ApplicationConfig中markets字段类型为Map<String, List<ServiceMetadata>>,Map的value直接就是ServiceMetadata类型的列表,没有额外的serviceEndpoints嵌套字段,你原有配置多增加了这一层级,导致属性无法匹配绑定。
正确的application.properties配置
# UK区域对应的ServiceMetadata列表第1个元素 props.markets.UK[0].applicationName=abc props.markets.UK[0].backendURL=http://localhost:8080/api/v1/markets/{marketId} # UK区域对应的ServiceMetadata列表第2个元素,按索引顺延即可 props.markets.UK[1].applicationName=xxx props.markets.UK[1].backendURL=xxx # ES区域对应的ServiceMetadata列表第1个元素 props.markets.ES[0].applicationName=xyz props.markets.ES[0].backendURL=http://localhost:8080/api/v2/markets/{marketId}
注意事项
- 同一个索引下的
ServiceMetadata需要配置所有需要的字段,不要拆分到不同索引,否则会生成多个仅单个字段有值的ServiceMetadata对象。 - 确认项目已引入
spring-boot-configuration-processor依赖,避免IDE提示配置未识别,Maven依赖配置如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
ApplicationConfig上的注解可优化:@Configuration和@Component不需要同时添加,保留一个即可;也可以将@EnableConfigurationProperties替换为@EnableConfigurationProperties(ApplicationConfig.class),绑定逻辑更清晰。- 确保
ServiceMetadata类存在无参构造方法以及对应字段的getter/setter,使用lombok的@Data注解会自动生成这些内容,确认lombok依赖和IDE插件正常生效即可。
内容的提问来源于stack exchange,提问作者user1346346
相关产品推荐
相关产品推荐

