Frühjahr Referenz auf eine Eigenschaft einer bean-Eigenschaft
Habe ich eine spring Konfigurations-Datei, die gut funktioniert.
Mein Nächster Schritt war die separate Benutzer-Konfiguration die Eigenschaften von system-Eigenschaften.
Habe ich beschlossen, erstellen Sie eine zusätzliche xml-Datei mit Bohnen, die wird durch den Anwender konfiguriert werden.
Hatte ich problem zu erstellen, nur wenige solcher logischen Bohnen Kapselung von Eigenschaften, die verwendet werden wird durch die wirkliche Klasse Bohnen:
Ich gefunden habe über das Netz eine option zum Verweis Anstand in solcher Weise:
UserConf.xml
<bean id="numberGuess" class="x...">
<property name="randomNumber" value="5"/>
<!-- other properties -->
</bean>
SystemConf.xml
<import resource="UserConf.xml" />
<bean id="shapeGuess" class="y...">
<property name="initialShapeSeed" value="#{ numberGuess.randomNumber }"/>
<!-- other properties -->
</bean>
Aber mein problem ist, dass ich brauche x...
Klasse zu sein, etwas logisches, das sollte nicht initialisiert werden, und ich möchte es nicht preisgeben, info der Klassen-Hierarchie des Systems, da sollte es erst in der Konfigurations-xml-Datei.
Solution1 erstellen Sie ein Java-Objekt repräsentiert diese Eigenschaften:
public class MyProps(...)
und fügen Sie eine Bohne Eltern im Frühjahr-system-Konfiguration:
<bean id="MyProps" class="path to MyProps"/>
in der Seite Benutzer ändern Sie die Vorherige bean:
<bean id="numberGuess" parent="MyProps">
<property name="randomNumber" value="5"/>
<!-- other properties -->
</bean>
Solution2 ist die Verwendung von flachen Konfiguration-Datei genau wie die Datenbank.Requisiten, und laden Sie es mit der Fabrik.
Solution3 ist die Verwendung von Spring-Eigenschaft Platzhalter-Konfiguration zu laden Eigenschaften von XML-properties-Datei (z.B. Beispiel), aber hier habe ich einfach nicht wissen, wie man komplexere, verschachtelte Struktur von Eigenschaften (Eigenschaften müssen getrennt von anderen logischen Namen, z.B. minNumber definiert werden, sowohl unter xAlgo und y algo).
Ich nicht gerne neue Java-Klasse nur um mit diesem problem umzugehen oder um meine Benutzer-Konfiguration zu einem flachen props-Datei (muss ich die xml-Struktur), wird Ihr eine andere Lösung??
Sorry, ich bin mir unklar, warum können Sie nicht einfach die properties-Dateien?
in verschiedenen Bohnen in der SystemConf-Datei
McIntyre: ich gab nur ein einfaches Beispiel für eine Eigenschaft , ein Teil meiner Eigenschaften und Bohnen werden könnte, und werden mit einer komplexen XML-Struktur
Hinzugefügt haben Lösung 3 das ist besser, wenn ich in der Lage, trennen Sie die Eigenschaften, um verschiedene logische Teile
InformationsquelleAutor Michael | 2013-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich beantworte meine eigene Frage, da es aussieht wie die beste Lösung für mich (und viel mehr simpel als vorgeschlagen wurde)
Verwende ich PropertiesFactoryBean um die Arbeit zu tun für mich:
z.B.
UserConf.xml
SystemConf.xml
InformationsquelleAutor Michael
Zuerst, wenn Sie nicht wissen, über die Eigenschaft Platzhalter Sie sollten einen Blick auf, die. Auch
@Value("${some.property:defaultvalue}")
ist etwas, das man anschauen sollte.Zweite das Wort Konfiguration mehrdeutig ist im Frühjahr. Feder benutzt dieses Wort, aber Sie bedeuten Entwickler Konfiguration keine Benutzer-Konfiguration. Trotz was die Leute sagen oder denken, ist der Frühling nicht eine Konfiguration Motor.
Ich bin mir nicht sicher, was Ihr versucht zu tun, aber Sie sollten sich bewusst sein, dass Ihre Konfiguration nicht zur Laufzeit geändert werden, die Häufig gebraucht wird und für so etwas wie "Benutzer" - Konfiguration. So sind die meisten Menschen schreiben Ihre eigene Konfigurations-Ebene.
Andere Sache, die Sie sollten einen Blick auf, nicht über die XML-Konfiguration und stattdessen Java Konfiguration, die Ihnen viel mehr Flexibilität.
Wenn die Konfiguration kompliziert (also Schachteln) ich benutze Jackson oder JAXB Deserialisieren einer config-Datei auf eine Daten-POJO wie Ihr MyProps. Wo der JSON-oder XML-Datei konfiguriert ist, als eine Eigenschaft (System-Eigenschaft oder Umgebung... etc).
keinen anderen Weg, es zu lösen?, gibt es nicht eine Standard-bean werden in XML definiert , und Sie verweisen kann, um seine innere nested-Eigenschaft ohne Verwendung von Platzhaltern?
Gut man könnte ja ein
<import...
auf der Grundlage einer Eigenschaft, aber Sie müssen noch eine weitere Bohne wieMyProps
. Seine ok, um ein anderes Objekt, wie es liefert eine Schicht der Dereferenzierung (das Markenzeichen von software-design).Ich habe eine Lösung gefunden, die scheint zu sein, mehr simpel, so befestigte ich eine Antwort auf meine post, vielen Dank für Eure Hilfe
InformationsquelleAutor Adam Gent