Почему я не могу загрузить свойство POJO, используя YAML в Spring Boot? - PullRequest
0 голосов
/ 07 февраля 2020

Я прочитал многочисленные посты, вопросы, примеры и все, что должно работать, но по каким-то причинам это не работает ...

Может кто-нибудь сказать мне, почему это не работает ??

@Configuration()
@PropertySource("users.yml")
@Data
@ConfigurationProperties
@EnableConfigurationProperties
public class UserConfig {


    public String test;
    public List<String> states;
    public List<User> users;

    @PostConstruct
    public void print() {
        System.out.println(this);
        System.exit(0);
    }
}

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {

    private String username;
    private String pw;
    private List<String> roles;
}

А на выходе получается UserConfig(test='yeah im tested', states=[], users=[])

для заданного YAML

test: 'yeah im tested'
states:
  - 'Up'
  - 'Down'
users:
  -
    username: 'Gienek'
    pw: 'niegienek'
    roles:
      - 'rola1'
      - 'rola2'

Примечание: с использованием states: 'Up','Down' состояний заполнения list.

Обратите внимание, что он работает частично.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Точнее, это «известный» факт, что Spring Boot не хочет поддерживать @PropertySource для правильной поддержки файлов yml, поскольку это не «стандарт» для использования @Propertysource в загрузочном проекте Spring. .. Вот ссылка на обсуждение: https://github.com/spring-projects/spring-framework/issues/18486.

Вы также можете попробовать, как рекомендовано, EnvironmentPostProcessor: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto -customize-the -environment-or-application-context

Я бы порекомендовал любому попробовать app.yml, если у вас нет ограничений на использование.

Одним из решений является копирование содержимое вашего users.yml в application.yml, которое точно соответствует вашим потребностям.

src / main / resources / application.yml

test: 'yeah im tested'
states:
  - 'Up'
  - 'Down'
users:
  -
    username: 'Gienek'
    pw: 'niegienek'
    roles:
      - 'rola1'
      - 'rola2'

UserConfig. java

@Data
@Configuration
@ConfigurationProperties
@EnableConfigurationProperties
public class UserConfig {
    ...
}
0 голосов
/ 07 февраля 2020

Похоже, что это просто ограничение того, как Spring hasles yaml файлы, и мне не повезло без пользовательской реализации.

https://github.com/spring-projects/spring-framework/issues/16381

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...