描述 我正在尝试将以下配置与我的 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 类。我不确定我到底错过了什么。
到目前为止,我的故障排除工作 依赖于这个 spring 文档,将我的配置具体化。我知道@ConfigurationProperties 是类型安全的,并且已经单独测试了枚举、映射和 POJO 的绑定。但是同时拥有所有三个是我无法实现的。
请在 Resource 和 APIConfig 的内部类中添加static,例如:
public static class Resource {
    private String name;
    private String apiPath;
    private String jsonPath;
}
| 归档时间: | 
 | 
| 查看次数: | 2698 次 | 
| 最近记录: |