В приложении 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 остались несвязанными. У кого-нибудь есть идея? Спасибо
Да, у меня есть помощники и сеттеры для информации.
Ну clientId и client-id это разные имена. Вместо этого используйте clientId в YAML или каким-либо образом сообщите Spring, чтобы правильно отображать имя (я не знаком с обработкой Spring YAML).
@flyx Spring автоматически сопоставляет переменные camelCase с yml. Буквы верхнего регистра преобразуются в буквы нижнего регистра с префиксом -




Я нашел свою ошибку, внутренние классы должны быть статическими, я забыл статический перед классом InfosTenant.
public static class InfosTenant{
private String clientId = "";
private String clientSecret = "";
public InfosTenant() {
}
// getters/setters ...
}
У вас есть геттер и сеттер для infosTenants?