Spring hat eine sehr praktische Convenience-Klasse namens PropertyPlaceholderConfigurer , die eine Standarddatei mit der Erweiterung .properties übernimmt und Werte daraus in die Konfiguration "bean.xml" einfügt.
Kennt jemand eine Klasse, die genau dasselbe tut, und integriert sich auf dieselbe Weise mit Spring, akzeptiert aber XML-Dateien für die Konfiguration. Insbesondere denke ich an Apache Digester-Config-Dateien. Es wäre einfach genug, dies zu tun, ich frage mich nur, ob jemand schon hat.
Vorschläge?
Ich habe das gerade getestet und es sollte einfach funktionieren.
PropertiesPlaceholderConfigurer enthält eine setPropertiesPersister-Methode, sodass Sie Ihre eigene Unterklasse von EigenschaftenPersister . Der standardmäßige PropertiesPersister unterstützt bereits Eigenschaften im XML-Format.
Nur um Ihnen den voll funktionsfähigen Code zu zeigen:
JUnit 4.4 Testfall:
%Vor% Die Spring-Konfigurationsdatei test-config.xml
Die XML-Eigenschaftendatei properties.xml
- siehe hier zur Beschreibung der Verwendung.
Und schließlich die Bohne:
%Vor%Hoffe, das hilft ...
Sie haben herausgefunden, dass Spring Modules eine Integration zwischen Spring und Commons Configuration bietet, die eine hierarchische Struktur hat XML-Konfigurationsstil Dies bindet direkt an PropertyPlaceholderConfigurer, was genau das ist, was ich wollte.
Ich habe versucht, selbst eine schöne Lösung zu finden, die
Die Bean, in die Eigenschaftswerte injiziert werden sollen:
%Vor%Testen Sie die Klasse, um die obige Bean zu erstellen und die darin enthaltenen Eigenschaftswerte auszugeben:
%Vor%MyConfig.xsd:
%Vor%Beispiel für die Datei MyConfig.xml basierend auf dem XSD:
%Vor%Snippet der Datei pom.xml zum Ausführen von xsd2java (es gab außer der Einstellung auf Java 1.6 und der Abhängigkeit vom Spring-Kontext nicht viel anderes):
%Vor%Jetzt das Quell-XML selbst. Dies erstellt ein Schema / Validator, dann JAXB verwendet, um einen Unmarshaller zu erstellen, um ein POJO aus der XML-Datei zu erstellen, und verwendet dann Spring # Annotation, um Eigenschaftswerte durch Abfragen des POJO einzufügen:
%Vor%Ich bin nicht sicher über die Apache Digester-Config-Dateien, aber ich fand eine Lösung, die nicht so schwer zu implementieren und passend für meine XML-Konfigurationsdatei war.
Sie können den normalen PropertyPlaceholderConfigurer von spring verwenden, aber um Ihre benutzerdefinierte Konfiguration zu lesen, müssen Sie Ihren eigenen PropertiesPersister erstellen, wo Sie das XML (mit XPath) analysieren und die erforderlichen Eigenschaften selbst festlegen können.
Hier ist ein kleines Beispiel:
Erstellen Sie zuerst Ihren eigenen PropertiesPersister, indem Sie den Standardnamen erweitern:
%Vor%Fügen Sie dann den CustomPropertiesPersister in den PropertyPlaceholderConfigurer im Anwendungskontext ein:
%Vor%Danach können Sie Ihre Eigenschaften wie folgt verwenden:
%Vor%Tags und Links java xml spring properties