Spring Boot: Liste von yaml mit @Value oder @ ConfigurationProperties @ les

Ich möchte eine Liste von Hosts aus einer Yaml-Datei (application.yml) lesen. Die Datei sieht folgendermaßen aus:

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

(Beispiel 1

Meine verwendete Klasse definiert den Wert wie folgt:

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

Aber das Lesen schlägt fehl, da Spring sich darüber beschwert:

java.lang.IllegalArgumentException: Platzhalter 'cors.hosts.allow' im Zeichenfolgenwert "$ {cors.hosts.allow}" konnte nicht aufgelöst werden

Wenn ich die Datei so ändere, kann die Eigenschaft gelesen werden, aber natürlich enthält sie nicht die Liste, sondern nur einen Eintrag:

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

(Ich weiß, dass ich die Werte als einzelne Zeile lesen und durch @ teilen könnt"," aber ich möchte noch keinen Workaround machen)

Dies funktioniert auch nicht (obwohl ich denke, dass dies laut @ gültig sein sollsnakeyamls docs):

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

(Überspringen des!!seq und nur mit dem[ / ] ist auch ein Fehler)

Ich habe den Vorschlag gelesenHie was beinhaltet die Verwendung von@ConfigurationProperties und übertrug das Beispiel nach Java und verwendete es mit der yaml-Datei, die Sie in Beispiel 1 sehen:

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

Wenn ich das starte bekomme ich diese Beschwerde:

org.springframework.validation.BindException: org.springframework.boot.bind.RelaxedDataBinder $ RelaxedBeanPropertyBindingResult: 1 Fehler Feldfehler im Objekt 'cors.hosts' im Feld 'allow': Abgelehnter Wert [null]; codes [NotNull.cors.hosts.allow, NotNull.allow, NotNull]; Argumente [org.springframework.context.support.DefaultMessageSourceResolvable: codes [cors.hosts.allow, allow]; Argumente []; Standardnachricht [erlauben]];

Ich habe nach anderen Möglichkeiten gesucht, um meine CORS-Hosts zu konfigurieren, und habe diese gefunden.Spring Boot issue aber da dies noch nicht abgeschlossen ist, kann ich es nicht als Lösung verwenden. All dies geschieht mit Spring Boot 1.3 RC1

Antworten auf die Frage(6)

Ihre Antwort auf die Frage