2014-08-27 15 views
6

Come posso avviare un'applicazione JPA Spring Boot autonoma - non via cli - con una scelta di database per ottenere dati, ad esempio localhost: 5432/my_db; o 192.168.1.100:5432/our_db o example.com:5432/their_db?Spring Boot JPA Scelta database

miniera attualmente utilizza quella nel file che contiene application.properties:

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 

Grazie in anticipo

+0

Come verrà effettuata la scelta? Qual è il criterio? – geoand

risposta

3

Dato che probabilmente è necessario configurare username e password, nonché, si raccomanda di creare application-mydatasource.properties file separati per ogni configurazione dell'origine dati. Si attiverà quindi l'origine dati che si desidera utilizzare in base all'impostazione del profilo attivo. È possibile impostare il profilo attivo sia in application.properties (spring.profiles.active) o tramite un argomento da riga di comando:

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

Il application-mydatasource.properties verranno ignorate nessun alloggio nel vostro application.properties. Credo che dovrai anche impostare spring.profiles= nell'elenco dei profili disponibili.

Vedere Profile specific properties.

+0

Ho pensato che i file delle proprietà dovevano essere in questo formato: 'application- {profile} .properties'. Inoltre, 'spring.profiles =' dovrebbe essere 'spring.profiles.active =', corretto? –

+1

@EricFrancis, hai ragione sul nome del file delle proprietà. Ho corretto la mia risposta. Ma dal momento che sto passando il profilo attivo come riga di comando, non devo specificare il profilo attivo in spring.profiles.active. – gyoder

+0

"Un file YAML è in realtà una sequenza di documenti separati da linee --- e ogni documento viene analizzato separatamente in una mappa appiattita Se un documento YAML contiene una chiave spring.profiles, quindi il valore dei profili (separato da virgole elenco dei profili) è inserito in Spring Environment.acceptsProfiles() e se uno di questi profili è attivo, quel documento è incluso nell'unione finale (altrimenti no). " La proprietà 'spring.profiles' è valida solo all'interno di un file YAML. – hellectronic

0

Un'altra opzioni oltre l'etichetta @profile, che si dovrà dichiarare in ogni ambiente che si distribuire l'applicazione, è possibile utilizzare nella primavera del Boot etichetta:

@ConditionalOnProperty (name = "propertyName", havingValue = "propertyValue")

E dichiarare una proprietà per decidere quale database si desidera caricare in ogni caso!

Spero di essere d'aiuto !!