2014-08-27 17 views
6

Wie kann ich eine eigenständige Spring-Start-JPA-Anwendung - nicht über CLI - mit einer Auswahl von Datenbanken zum Abrufen von Daten, z. B. localhost: 5432/my_db; oder 192.168.1.100:5432/our_db oder example.com:5432/their_db?Spring Boot JPA-Datenbank-Auswahl

-Mine verwendet derzeit die man in der application.properties-Datei, die enthält:

spring.datasource.driverClassName=org.postgresql.Driver 
spring.datasource.url=jdbc:postgresql://localhost:5432/my_db 
spring.datasource.username=postgres 
spring.datasource.password=postgres 

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect 
spring.jpa.generate-ddl=true 
spring.jpa.show-sql=true 
spring.jpa.hibernate.ddl-auto=create 

Vielen Dank im Voraus

+0

Wie wird die Wahl getroffen? Was ist das Kriterium? – geoand

Antwort

3

Da Sie wahrscheinlich Benutzername und Passwort konfigurieren müssen auch, empfehle ich die Schaffung separater application-mydatasource.properties Dateien für jede Datenquellenkonfiguration. Sie aktivieren dann die Datenquelle, die Sie verwenden möchten, basierend auf dem Festlegen des aktiven Profils. Sie können das aktive Profil einstellen entweder in application.properties (spring.profiles.active) oder über eine Befehlszeilenargument:

$ java -jar -Dspring.profiles.active=mydatasource demo-0.0.1-SNAPSHOT.jar 

Die application-mydatasource.properties werden dann alle Objekte in Ihrem application.properties außer Kraft setzen. Ich glaube, Sie müssen auch spring.profiles= auf die Liste der verfügbaren Profile setzen.

Siehe Profile specific properties.

+0

Ich dachte, Property-Dateien müssten in diesem Format sein: 'application- {profile} .properties'. Außerdem sollte 'spring.profiles =' 'spring.profiles.active =' sein, richtig? –

+1

@EricFrancis, Sie haben Recht mit dem Namen der Eigenschaftendatei. Ich habe meine Antwort korrigiert. Aber da ich das aktive Profil als Befehlszeile übergebe, muss ich das aktive Profil in spring.profiles.active nicht angeben. – gyoder

+0

„A YAML Datei ist tatsächlich eine Sequenz von Dokumenten getrennt durch --- Linien, und jedes Dokument wird separat auf eine abgeflachte Karte geparst. Wenn ein Dokument einen YAML spring.profiles Schlüssel enthält, dann die Profile Wert (Comma Separated Liste der Profile) ist in die Feder Environment.acceptsProfiles() zugeführt, und wenn eine dieser Profile aktiv ist, daß das Dokument in der Endverpackung merge (sonst nicht) enthalten.“ Die Eigenschaft 'spring.profiles' ist nur in einer YAML-Datei gültig. – hellectronic

0

Weitere Optionen neben dem @Profile Label, dass Sie in jeder Umgebung erklären müssen, dass Sie die Anwendung bereitstellen wird, könnten Sie das Etikett im Frühjahr Stiefel verwenden:

@ConditionalOnProperty (name = „PROPERTY“, havingValue = „property“)

Und eine Eigenschaft erklären, wich Datenbank zu entscheiden, Sie wollen in jedem Fall laden!

Hoffe, helfen !!