Der Flucht die einen Punkt in einer Karte Schlüssel in Yaml im Frühjahr Starten
Ich habe folgende config yml:
foo:
bar.com:
a: b
baz.com:
a: c
Mit folgenden Klasse Feder versucht, Spritzen Sie anzeigen mit den Tasten 'bar' und 'baz', die Behandlung der Punkte als Trennzeichen:
public class JavaBean {
private Map<String, AnotherBean> foo;
(...)
}
Habe ich versucht, unter Angabe der Schlüssel (d.h. 'bar.com" oder "bar.com") aber ohne Erfolg - immer noch das gleiche problem. Gibt es eine Möglichkeit, um dieses?
- Der Grund sind unter Angabe der Schlüssel hat nicht geholfen wird, weil
bar.com:
,"bar.com":
und'bar.com':
(und? bar.com
) alle vertreten die gleiche genau die gleiche Sache in YAML und sind alle deserialisiert, um die Zeichenfolgebar.com
. Der Punkt muss nicht bedeuten, etwas besonderes in YAML—das Verhalten, die Sie sehen, geschieht im Frühjahr nach der YAML deserialisiert wird. - So ist der Frühling mit YamlPropertiesFactoryBean hinter den kulissen? Wenn dem so ist, gibt es einen Weg, um es verwenden YamlMapFactoryBean statt? 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine leichte überarbeitung von @fivetenwill Antwort, die funktioniert für mich auf Spring Boot 1.4.3.RELEASE:
Müssen Sie die Klammern werden innerhalb von Anführungszeichen, sonst wird der YAML-parser grundsätzlich verwirft, bevor Sie sich auf den Frühling, und Sie machen es nicht in den Namen der Eigenschaft.
Dies ist nicht möglich, wenn Sie möchten, dass die automatische Zuordnung von yaml-Tasten, um Java-bean-Attribute. Grund dafür ist, Spring zuerst konvertieren von YAML in Eigenschaften format.
Siehe Abschnitt 24.6.1 der link:
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
So, Ihr YAML umgewandelt wird:
Oben genannten Schlüssel werden analysiert, als standard-Eigenschaften.
Als Problemumgehung, die Sie verwenden können, Spring
YamlMapFactoryBean
zum erstellen einer Yaml-Karte, wie es ist. Anschließend können Sie die Karte zu erstellen, die Java-beans, indem Sie Ihre eigenen.Sollte dies funktionieren:
Inspiriert von Spring Boot-Konfiguration Bindung Wiki