Wie ich es momentan sehe, habe ich 5 mögliche Datenbankprofile
momentan habe ich Postgres für die Ausführung der Anwendung konfiguriert und H2 für das Testen über einen anderen application.properties
in Java/resource
s vs test/resources
konfiguriert.
was ist der einfachste Weg, um die Datenbankverbindungsinformationen für diese Szenarien zu ändern?
Wie Herr Deinum in seinem Kommentar erwähnt, ist die einfachste Methode, profile-spezifische Konfiguration zu verwenden.
Spring Boot ermöglicht Ihnen, eine gemeinsame Konfigurationsdatei (application.properties
) und mehrere andere Dateien zu erstellen, von denen jede für ein Profil spezifisch ist (application-${profile}.properties
).
Zum Beispiel:
application.properties
- Gemeinsame Konfigurationapplication-dev.properties
- Konfiguration für das dev-Profilapplication-ci.properties
- Konfiguration für ci-ProfileWenn Ihre Anwendung beispielsweise mit einem "ci" -Profil läuft, werden die Standardkonfigurationsdatei sowie die ci-Konfigurationsdatei (die die Datenquellen-Konfigurationseigenschaften für das ci-Profil enthalten würde) geladen.
Zum Wechseln des Profils können Sie eine der folgenden Optionen verwenden:
-Dspring.profiles.active=ci
--spring.profiles.active=dev
Für Komponententests können Sie die @ActiveProfiles("test")
-Anmerkung in Ihren Testklassen verwenden, um Spring mitzuteilen, dass Komponententests mit einem Testprofil ausgeführt werden sollten.
Wenn Sie keine Produktionsdatenbank-Anmeldeinformationen zusammen mit dem Quellcode speichern möchten, können Sie bei der Bereitstellung Ihrer App in der Produktion eine externe Konfigurationsdatei angeben:
--spring.config.location=/srv/myapp/config.properties
-Dspring.config.location=/srv/myapp/config.properties
Die kompakte Antwort für das obige Szenario wäre, eine einzelne application.yml-Datei zu erstellen und je nach Anforderung verschiedene Profile zu erstellen, in Ihrem Fall -dev, -ci und -prod und die DB-Informationen entsprechend bereitzustellen.
Beispielbeispiel ist:
spring:
profiles.active: development
---
spring:
profiles: development
datasource:
db-person:
url: jdbc:Oracle:thin:@db_person_dev
username: username
password: pwd
driver-class-name: Oracle.jdbc.OracleDriver
test-on-borrow: true
validation-query: SELECT 1 FROM dual
db-contract:
url: jdbc:Oracle:thin:@db_contract_dev
username: username
password: pwd
driver-class-name: Oracle.jdbc.OracleDriver
test-on-borrow: true
validation-query: SELECT 1 FROM dual
---
spring:
profiles: test
datasource:
db-person:
url: jdbc:Oracle:thin:@db_person_test
username: username
password: pwd
driver-class-name: Oracle.jdbc.OracleDriver
test-on-borrow: true
validation-query: SELECT 1 FROM dual
db-contract:
url: jdbc:Oracle:thin:@db_contract_test
username: username
password: pwd
driver-class-name: Oracle.jdbc.OracleDriver
test-on-borrow: true
validation-query: SELECT 1 FROM dual
---
spring:
profiles: production
datasource:
db-person:
url: jdbc:Oracle:thin:@db_person_prod
username: username
password: pwd
driver-class-name: Oracle.jdbc.OracleDriver
test-on-borrow: true
validation-query: SELECT 1 FROM dual
db-contract:
url: jdbc:Oracle:thin:@db_contract_prod
username: username
password: pwd
driver-class-name: Oracle.jdbc.OracleDriver
test-on-borrow: true
validation-query: SELECT 1 FROM dual
---
Für ein besseres Verständnis und ein einfaches Beispiel können Sie diesen Link verwenden.