Quelle: Umwelt-spezifische Konfiguration
Mit Spring ich brauche eine Art environment (dev|test|prod) spezifische Eigenschaften.
Habe ich genau eine Konfigurationsdatei ("myapp".Eigenschaften) und für einige Gründe, warum ich nicht mehr als eine Konfigurations-Datei (auch Frühjahr kann mit mehr als einem).
Also brauche ich die Möglichkeit, eigene Eigenschaften mit einem Präfix wie
dev.db.user=foo
prod.db.user=foo
und der Anwendung mitteilen, welche Präfix (Umwelt) zu benutzen, mit einem VM-argument wie -Denv-target
oder sowas.
- Schauen Sie in die Profile. Sie nicht haben, um verschiedene Eigenschaften in der gleichen Dateien. Sie hätten bestimmte Eigenschaften, die Dateien für jede Umgebung. Einstieg.
- Profile wäre eine logische Ort, um zu starten. Wenn das nicht Ihren Bedürfnissen entsprechen, ich würde erstellen Sie eine property-Datei locator-Klasse; zum Beispiel haben wir diejenigen zu laden, property-Dateien, basierend auf Benutzer und/oder Rechner-Namen.
- DaveNewton: vielen Dank für deine Idee. Ich werde einen Blick auf die profile.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich benutze für diesen Zweck eine subcass von
PropertyPlaceholderConfigurer
:und in
applicationContext.xml
(oder einer anderen spring-Konfigurationsdatei):In
my.properties
können Sie definieren Eigenschaften wie:Dadurch können Sie Präfix-Eigenschaften Schlüssel von einem Schlüssel Umgebung (z.B.
prod
).Mit dem vm-argument
targetEnvironment
Sie können wählen, die Umwelt, die Sie benutzen möchten, z.B.-DtargetEnvironment=prod
.Wenn kein environment-specific-property vorhanden ist, wird der Standardwert (ohne Präfix) gewählt. (Sollten Sie immer definieren Sie eine Standard-Einstellung.)
Ich weiß nicht, was sind Ihre Einschränkungen zu vermeiden, mehr als eine Datei, aber Sie können etwas wie -Denvtarget=someValue und in java tun:
Wenn Sie die environment-variable und wollen sich Eigentum nach dieser variable, die Sie deklarieren können, Ihre Eigenschaften, die Art und Weise:
Stellen auch sicher, dass du ordentlich konfiguriert Eigenschaft-Platzhalter:
Oder, wenn Sie spezielle Eigenschaft configurer (z.B. EncryptablePropertyPlaceholderConfigurer), legen Sie die Eigenschaften:
Aber wie bereits erwähnt ist es besser, zu verwenden profile.