Spring Boot: - Lesen-Liste von yaml mit @Value oder @ConfigurationProperties

Ich Lesen möchte eine Liste von hosts aus einer yaml-Datei (Anwendung.yml), die Datei sieht wie folgt aus:

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

(Beispiel 1)

Meiner Klasse verwendet, definiert der Wert wie diese:

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

Aber das Lesen schlägt fehl, wie der Frühling beschwert sich über diese:

java.lang.IllegalArgumentException: Konnte nicht aufgelöst werden Platzhalter
'cors.hosts.zulassen' in der string-Wert "${cors.hosts.erlauben}"

Wenn ich die Datei ändern, wie dies die Eigenschaft kann gelesen werden, aber natürlich enthält es keine Liste, sondern nur ein Eintrag:

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

(Ich weiß, dass ich konnte Lesen Sie die Werte in einer einzigen Zeile, geteilt durch "," aber ich will nicht zu gehen an einem workaround noch)

Dieser funktioniert entweder nicht (obwohl ich denke, das gültig sein sollte nach snakeyamls docs):

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

(Überspringen der !!seq und nur mit der [ /] ist ein Ausfall zu)

Lese ich den Vorschlag hier, die umfasst die Verwendung @ConfigurationProperties und übertragen das Beispiel auf Java und verwendet es mit der yaml-Datei sehen Sie in Beispiel 1:

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

Wenn ich diesen starte, bekomme ich diese Beschwerde:

org.springframework.die Validierung.BindException:
org.springframework.boot.binden.RelaxedDataBinder$RelaxedBeanPropertyBindingResult:
1 Fehler, Bereich Fehler in Objekt 'cors.hosts' auf dem Feld 'zulassen': abgelehnt
Wert [null]; codes [NotNull.cors.hosts.ermöglichen,NotNull.ermöglichen,NotNull];
Argumente
[org.springframework.Kontext.Unterstützung.DefaultMessageSourceResolvable:
codes [cors.hosts.erlauben,zulassen]; argumen ts []; Standard-Nachricht
[zulassen]];

Suchte ich nach anderen Mitteln, um meinen CORS hosts konfigurierbar und fand diese Spring Boot-Problem aber das ist noch nicht fertig, ich kann es nicht verwenden, als eine Lösung.
All dies geschieht mit Spring-Boot-1.3 RC1

  • Scheint wie eine ungelöste Frühjahr bug (SPR-11759).
  • Ich habe versucht zu wechseln @ConfigurationProperties und leider funktioniert das nicht, entweder.
InformationsquelleAutor Marged | 2015-10-27
Schreibe einen Kommentar