Eine andere Strategie, die ich verwende besteht aus includes. Normalerweise speicher ich meine DEV-Einstellungen in der defaultapplication.conf
Datei, dann erstelle ich eine neue Conf-Datei für andere Umgebungen und die Standard-eine.
Lassen Sie uns meine DEV conf sagen application.conf
wie folgt aussieht:
myapp {
server-address = "localhost"
server-port = 9000
some-other-setting = "cool !"
}
dann für die ART, konnte ich eine andere Datei prod.conf
genannt haben:
include "application"
# override default (DEV) settings
myapp {
server-address = ${PROD_SERVER_HOSTNAME}
server-port = ${PROD_SERVER_PORT}
}
Bitte beachte, dass ich die Einstellungen nur außer Kraft setzen diese Änderung in der PROD-Umgebung (some-other-setting
ist also die gleiche wie in DEV).
Der Code Config-Bootstrap-Test nichts
...
val conf = ConfigFactory.load()
...
von der DEV auf den ART conf zu wechseln, einfach eine Systemeigenschaft mit dem Namen der Konfigurationsdatei zu laden passieren:
java -Dconfig.resource=prod.conf ...
In DEV, keine Notwendigkeit, es zu übergeben, da application.conf
von default geladen wird.
Also hier verwenden wir Typesafe Config Standard-Lademechanismus, um dies zu erreichen.
Ich habe eine einfache project erstellt, um diese Technik zu demonstrieren. Fühlen Sie sich frei zu klonen und zu experimentieren.
Es dauerte eine Weile, bis ich dieses Muster gefunden habe, das den Vorrang der Systemeigenschaften behält: ConfigFactory.defaultOverrides(). WithFallback (config2.getConfig (environment)). WithFallback (config2); https://github.com/typesafehub/config/blob/master/examples/java/complex-app/src/main/java/ComplexApp.java –