如何将包含Pojos的Map对象绑定到yaml文件?

时间:2019-03-25 22:42:09

标签: java spring-boot yaml spring-cloud-config

在spring-boot / spring-cloud应用程序中,我想将Map对象绑定到我的application.yml,但是我遇到了“ Elements ... where lef unbound error”。

在名为Ebox的类中,我想绑定一个名为infosTenants的地图,该地图由字符串标识并包含InfosTenant类型的值。

在application.yml下面(没有每个类或子类的getter / setter方法)

@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)
public class ApplicationProperties {

    private Ebox ebox = new Ebox();

    public ApplicationProperties() {
    }

    // getters/setters ...

    public static class Ebox {
        private String authUrl;
        private Map<String, InfosTenant> infosTenants = new HashMap<>();

        public Ebox() {
        }

        public class InfosTenant{

            private String clientId="";
            private String clientSecret="";

            public InfosTenant() {
            }
            // getters/setters ...

        }
    }
}

在我的application.yml中,我在租户图中定义了一个租户,由关键的tenant1标识。

application:
    ebox:
        auth-url: https://oauth-server/api/oauth/token
        infos-tenants:
            tenant1:
                client-id: myclient
                client-secret: secret

但是信息租户下的所有值均不受约束。 有人有主意吗? 谢谢

1 个答案:

答案 0 :(得分:0)

我发现了错误,内部类应该是静态的,在InfosTenant类之前我忘记了静态的。

public static class InfosTenant{

        private String clientId="";
        private String clientSecret="";

        public InfosTenant() {
        }
        // getters/setters ...

    }