2014-08-27 102 views
6

如何啓動一個獨立的Spring啓動JPA應用程序 - 而不是通過cli--通過選擇數據庫來獲取數據,例如localhost:5432/my_db;或192.168.1.100:5432/our_db,或example.com:5432/their_db?Spring Boot JPA數據庫選擇

煤礦目前使用的一個在包含application.properties文件:提前

+0

如何做出選擇?什麼是標準? – geoand 2014-08-27 21:10:40

回答

3

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 

感謝因爲你很可能需要配置用戶名和密碼,以及,我建議創建單獨的application-mydatasource.properties文件爲每個數據源配置。然後您將根據設置活動配置文件激活您想要使用的數據源。您可以設置活動的配置文件無論是在application.propertiesspring.profiles.active)或通過命令行參數:

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

application-mydatasource.properties將然後在application.properties覆蓋任何屬性。我相信您還需要將spring.profiles=設置爲可用配置文件列表。

請參閱Profile specific properties

+0

我認爲屬性文件必須採用以下格式:'application- {profile} .properties'。另外,'spring.profiles ='應該是'spring.profiles.active =',對嗎? – 2015-10-01 20:07:09

+1

@EricFrancis,你是正確的屬性文件的名稱。我糾正了我的答案。但是因爲我將活動配置文件作爲命令行傳遞,所以我不必在spring.profiles.active中指定活動配置文件。 – gyoder 2015-10-02 17:07:49

+0

「YAML文件實際上是一系列由---行分隔的文檔,並且每個文檔都被分別解析爲扁平化的地圖。 如果YAML文檔包含spring.profiles鍵,則profile值(逗號分隔配置文件列表)被饋送到Spring Environment.acceptsProfiles()中,並且如果這些配置文件中的任何配置文件處於活動狀態,則該文檔將包含在最終合併中(否則不會)。「 'spring.profiles'屬性只在YAML文件中有效。 – hellectronic 2017-08-28 10:21:10

0

除了@profile標籤的另一個選項,你將不得不在每一個環境來聲明,我們將部署應用程序,你可以在Spring引導使用標籤:

@ConditionalOnProperty(NAME =「PROPERTYNAME」 havingValue =「propertyValue」)

並聲明一個屬性來決定你想在每種情況下加載哪個數據庫!

希望正在幫助!

相關問題