【发布时间】:2019-03-03 14:07:24
【问题描述】:
说明 我正在尝试将以下配置与我的 Component 类绑定-
platform:
service:
config:
guard:
hostname: fancy-host1.kiki.com
resources:
- name: bark
api-path: dog/alert/bark/{dog-id}
- name: bite
api-path: dog/alert/bite/{dog-id}
json-path: $..kill-mode
play:
hostname: fancy-host2.kiki.com
resources:
- name: lick
api-path: dog/chill/lick/{dog-id}
json-path: $..cute-mode
我的组件类看起来像这样-
@Component
@ConfigurationProperties(prefix = "platform.service")
public class DogConfig
{
@Getter
@Setter
public class Resource
{
private String name;
private String apiPath;
private String jsonPath;
}
@Getter
@Setter
public class APIConfig
{
private String hostname;
private List<Resource> resources = new ArrayList<>();
}
private Map<ServiceType, APIConfig> config = new LinkedHashMap<>();
public Map<ServiceType, APIConfig> getConfig()
{
return config;
}
public void setConfig(Map<ServiceType, APIConfig> config)
{
this.config = config;
}
}
在上面的代码中,ServiceType 是一个具有值 GUARD 和 PLAY 的枚举。
问题 虽然我的 Spring Boot 应用程序在初始化时没有抛出任何错误,但它没有将我的 YAML 绑定到 DogConfig 类。我不确定我到底错过了什么。
到目前为止我的故障排除工作 我依靠this spring doc 来外部化我的配置。我知道@ConfigurationProperties 是类型安全的,并且已经单独测试了枚举、映射和 POJO 的绑定。但同时拥有这三个是我无法实现的。
【问题讨论】:
标签: java spring-boot