In meiner Spring Boot-Anwendung möchte ich eine umgebungsspezifische Eigenschaftendatei erstellen. Der Verpackungstyp meiner Anwendung im Krieg und ich führe sie in Embedded Tomcat aus. Ich benutze sts und führe das main von sts selbst aus.
- Kann ich eine umgebungsspezifische Eigenschaftendatei wie application - $ {env-value} .properties haben?
Im obigen Fall hat env-value Werte wie local / devl / test / prod
Wo soll die env-Wert-Datei eingestellt werden? Für local kann ich es durch sts als jvm-Argument festlegen
Wer liest die application.properties in der Spring Boot-Anwendung?
Wie lade ich die umgebungsspezifische Eigenschaftendatei? Wenn ich zum Beispiel die Datenbank-UID, das PWD, das Schema usw. in einer umgebungsspezifischen Eigenschaftendatei festlege, kann die Datenquelle in diesem Fall die darin enthaltenen Eigenschaften verstehen?
Kann ich die Dateien application.properties und application-local.properties gleichzeitig verwenden?
quelle
spring.active.profiles
so einstellen musst-Dspring.active.profiles=local
. stattdessen.Antworten:
Frühlings - Boot bereits hat die Unterstützung für Profil basierter Eigenschaften.
Fügen Sie einfach eine
application-[profile].properties
Datei hinzu und geben Sie die zu verwendenden Profile mithilfe derspring.profiles.active
Eigenschaft an.-Dspring.profiles.active=local
Dadurch werden die
application.properties
und dieapplication-local.properties
mit letzteren überschreibenden Eigenschaften von der ersten geladen .quelle
Ja, du kannst. Da Sie Feder verwenden,
@PropertySource
lesen Sie die Anotation.Kommentieren Sie Ihre Konfiguration mit
@PropertySource("application-${spring.profiles.active}.properties")
Sie können es so nennen, wie Sie möchten, und bei Bedarf mehrere Eigenschaftendateien hinzufügen. Kann nett sein, wenn Sie mehr Sätze und / oder Standardeinstellungen haben, die zu allen Umgebungen gehören (kann auch mit @PropertySource {..., ..., ...} geschrieben werden).
@PropertySources({ @PropertySource("application-${spring.profiles.active}.properties"), @PropertySource("my-special-${spring.profiles.active}.properties"), @PropertySource("overridden.properties")})
Anschließend können Sie die Anwendung mit der Umgebung starten
-Dspring.active.profiles=test
In diesem Beispiel wird der Name durch Anwendungstest-Eigenschaften usw. ersetzt.
quelle
$spring.profiles.active}
es sich um eine Array / Komma-getrennte Zeichenfolge handelt. Es kann also sein, dass es nicht das tut, was Sie erwarten / wollen, wenn mehrere Profile aktiv sind.wir können so machen:
in application.yml :
spring: profiles: active: test //modify here to switch between environments include: application-${spring.profiles.active}.yml
in application-test.yml :
server: port: 5000
und in application-local.yml :
server: address: 0.0.0.0 port: 8080
dann startet spring boot unsere app wie wir wollen.
quelle
Mein Punkt: Auf diese Weise wird der Entwickler nicht gebeten, alle Umgebungen in einem Schritt zu erstellen, was zu dem Risiko führt, dass die Produktionskonfiguration dem Endentwickler ausgesetzt wird
Gemäß 12-Faktor sollte nicht nur die Umgebung spezifisch in der Umgebung sein.
Wie machen wir das für CI CD?
quelle