正如我目前所看到的,我有5个可能的数据库配置文件
目前我已经配置了运行应用程序的postgres,而h2配置为通过在application.properties
s vs java/resource
test/resources
来进行测试
对于这些场景,更新数据库连接信息的最简单方法是什么?
答案 0 :(得分:52)
正如M. Deinum在评论中提到的,最简单的方法是使用profile specific configuration。
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
答案 1 :(得分:1)
上述场景的紧凑答案是创建单个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
---
有关进一步理解和简单示例,请参阅此link.