Spring Boot: чтение списка из yaml с использованием @Value или @ConfigurationProperties

Я хочу прочитать список хостов из файла yaml (application.yml), файл выглядит так:

cors:
    hosts:
        allow: 
            - http://foo1/
            - http://foo2/
            - http://foo3/

(Пример 1)

Мой используемый класс определяет значение следующим образом:

@Value("${cors.hosts.allow}")   
List<String> allowedHosts;

Но чтение не удается, так как Spring жалуется на это:

java.lang.IllegalArgumentException: не удалось разрешить заполнитель 'cors.hosts.allow' в строковом значении "$ {cors.hosts.allow}"

Когда я изменяю файл следующим образом, свойство может быть прочитано, но, естественно, оно не содержит список, а содержит только одну запись:

cors:
    hosts:
        allow: http://foo1, http://foo2, http://foo3

(Я знаю, что могу прочитать значения одной строкой и разделить их на"," но я пока не хочу идти на обходной путь)

Это также не работает (хотя я думаю, что это должно быть действительным в соответствии сsnakeyamls docs):

cors:
    hosts:
        allow: !!seq [ "http://foo1", "http://foo2" ] 

(Пропуск!!seq и просто используя[ / ] тоже провал)

Я прочитал предложениеВот который включает в себя использование@ConfigurationProperties и перенес пример в Java и использовал его с файлом yaml, который вы видите в Example1:

@Configuration
@EnableWebMvc
@ConfigurationProperties(prefix = "cors.hosts")
public class CorsConfiguration extends WebMvcConfigurerAdapter {
    @NotNull
    public List<String> allow;
...

Когда я запускаю это, я получаю эту жалобу:

org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder $ RelaxedBeanPropertyBindingResult: 1 error Ошибка поля в объекте 'cors.hosts' в поле 'allow': отклоненное значение [null]; коды [NotNull.cors.hosts.allow, NotNull.allow, NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [cors.hosts.allow, allow]; аргумент тс []; сообщение по умолчанию [разрешить]];

Я искал другие способы настройки хостов CORS и нашел этоВесенняя загрузка но так как это еще не закончено, я не могу использовать это как решение. Все это делается с помощью Spring Boot 1.3 RC1

Ответы на вопрос(3)

Ваш ответ на вопрос