Spring Boot: leia a lista do yaml usando @Value ou @ConfigurationProperties

Eu quero ler uma lista de hosts de um arquivo yaml (application.yml), o arquivo fica assim:

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

(Exemplo 1)

Minha classe usada define o valor assim:

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

Mas a leitura falha quando o Spring reclama disso:

java.lang.IllegalArgumentException: não foi possível resolver o espaço reservado 'cors.hosts.allow' no valor da sequência "$ {cors.hosts.allow}"

Quando altero o arquivo assim, a propriedade pode ser lida, mas naturalmente ela não contém a lista, mas apenas uma entrada:

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

(Eu sei que eu poderia ler os valores como uma única linha e dividi-los por"," mas ainda não quero uma solução alternativa)

Isso também não funciona (embora eu ache que isso deve ser válido de acordo comsnakeyamls docs):

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

(Ignorando o!!seq e apenas usando o[ / ] também é um fracasso)

Eu li a sugestãoaqui que envolve o uso@ConfigurationProperties e transferiu o exemplo para Java e o usou com o arquivo yaml que você vê no Exemplo1:

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

Quando executo isso, recebo esta reclamação:

org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder $ RelaxedBeanPropertyBindingResult: 1 erros Erro de campo no objeto 'cors.hosts' no campo 'allow': valor rejeitado [null]; códigos [NotNull.cors.hosts.allow, NotNull.allow, NotNull]; argumentos [org.springframework.context.support.DefaultMessageSourceResolvable: codes [cors.hosts.allow, allow]; argumen ts []; mensagem padrão [permitir]];

Procurei por outros meios para ter meus hosts CORS configuráveis e achei issoProblema com o Spring Boot mas como isso ainda não terminou, não posso usá-lo como solução. Tudo isso é feito com o Spring Boot 1.3 RC1

questionAnswers(3)

yourAnswerToTheQuestion