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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist einfach, die Antwort ist in diesem doc und auch in diese eine
Also, Sie haben eine yaml so:
Dann Sie zuerst binden Sie die Daten
Dann in einer anderen Komponente, die Sie gerade tun
Und Sie sind fertig!
Verwendung von Komma-getrennte Werte in der Anwendung.yml
java-code, der Zugang
Ich versuchte und gelungen 😉
Konnte ich Lesen Liste von Eigenschaften wie unter Weg-
Eigenschaften-
Lesen Eigenschaft-