Как привязать объект Map, содержащий Pojos, к файлу yaml?

В приложении spring-boot/spring-cloud я хотел бы связать объект Map с моим application.yml, но у меня есть «Элементы... где левая несвязанная ошибка».

В моем классе под названием Ebox я хотел бы связать карту с именем infosTenants, идентифицируемую строкой и содержащую значения типа InfosTenant.

Ниже моего application.yml (без геттеров/сеттеров каждого класса или подкласса)

@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

Но все значения под infos-tenants остались несвязанными. У кого-нибудь есть идея? Спасибо

У вас есть геттер и сеттер для infosTenants?

Periklis Douvitsas 26.03.2019 00:34

Да, у меня есть помощники и сеттеры для информации.

Philippe Warnon 26.03.2019 00:45

Ну clientId и client-id это разные имена. Вместо этого используйте clientId в YAML или каким-либо образом сообщите Spring, чтобы правильно отображать имя (я не знаком с обработкой Spring YAML).

flyx 26.03.2019 10:29

@flyx Spring автоматически сопоставляет переменные camelCase с yml. Буквы верхнего регистра преобразуются в буквы нижнего регистра с префиксом -

Philippe Warnon 26.03.2019 12:01
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
684
1

Ответы 1

Я нашел свою ошибку, внутренние классы должны быть статическими, я забыл статический перед классом InfosTenant.

public static class InfosTenant{

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

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

    }

Другие вопросы по теме