gpt4 book ai didi

java - 将 ConfigurationProperties 绑定(bind)到 的映射

转载 作者:行者123 更新时间:2023-11-29 04:15:38 25 4
gpt4 key购买 nike

描述我正在尝试将以下配置与我的组件类绑定(bind) -

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 绑定(bind)到 DogConfig 类。我不确定我到底错过了什么。

到目前为止我的故障排除工作我依靠 this spring doc , 外部化我的配置。我知道 @ConfigurationProperties 是类型安全的,并且已经单独测试了枚举、映射和 POJO 的绑定(bind)。但是同时拥有所有这三个是我无法实现的。

最佳答案

请在 Resource 和 APIConfig 的内部类中添加 static例如:

public static class Resource {
private String name;
private String apiPath;
private String jsonPath;
}

关于java - 将 ConfigurationProperties 绑定(bind)到 <Enum,Pojo> 的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52540713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com