[英]How can I provide different database configurations with Spring Boot?
我目前看到它有5個可能的數據庫配置文件
目前我已經配置了運行應用程序的postgres,而h2配置為通過在java/resource
s vs test/resources
中使用不同的application.properties
進行test/resources
在這些場景中更改數據庫連接信息的最簡單方法是什么?
正如M. Deinum在評論中提到的,最簡單的方法是使用特定於配置文件的配置 。
Spring Boot允許您擁有一個公共配置文件( application.properties
),然后是多個其他文件,每個文件都特定於一個配置文件( application-${profile}.properties
)。
例如:
application.properties
- 常見配置 application-dev.properties
- 開發配置文件的配置 application-ci.properties
- ci配置文件的配置 例如,如果您的應用程序使用“ci”配置文件運行,則將加載默認配置文件以及ci配置文件(其中包含ci配置文件的數據源配置屬性)。
要切換配置文件,您可以使用以下選項之一:
-Dspring.profiles.active=ci
--spring.profiles.active=dev
對於單元測試,您可以在測試類上使用@ActiveProfiles("test")
注釋告訴Spring應該使用測試配置文件運行單元測試。
此外,如果您不想將生產數據庫憑據與源代碼一起存儲,則可以在生產中部署應用程序時指定外部配置文件:
--spring.config.location=/srv/myapp/config.properties
-Dspring.config.location=/srv/myapp/config.properties
針對上述場景的緊湊答案將是創建單個application.yml文件並根據需求創建不同的配置文件,在您的情況下為-dev,-ci和-prod,並相應地提供數據庫信息。
示例示例是:
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
---
有關進一步理解和簡單示例,請參閱此鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.