我正在尝试将Spring Boot应用程序配置为在存在某些环境变量时使用特定数据源。例如,如果MY_PROD_DATASOURCE
环境变量存在,我想使用我的生产数据源;否则,我想使用我的本地数据源(相同类型)。
我发现something in the Spring reference解释了如何在我的application.properties
中声明单个数据源。具体来说,MySQL数据源可能如下所示:
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driverClassName=com.mysql.jdbc.Driver
但是,我没有看到如何在此文件中有条件地更改数据源属性。还有其他办法吗?
答案 0 :(得分:13)
在Spring Boot中你可以:
通过添加路径作为启动参数,从jar中外部化application.properties
并为每个环境提供文件:
java -jar your-app.jar --spring.config.location=/path/to/app.properties
使用Spring配置文件。在每个不同的数据源属性
application-${profile}.properties
使用Spring配置文件而不是application.properties
,将您的属性设置为application.yaml
,您可以使用约定为所有环境添加属性,如下所示:
spring:
profiles: development
server:
port: 9001
---
spring:
profiles: production
server:
port: 0
使用环境变量并设置SPRING_DATASOURCE_URL
,SPRING_DATASOURCE_USERNAME
,SPRING_DATASOURCE_PASSWORD
和(可选)SPRING_DATASOURCE_DRIVER_CLASS_NAME
。
在How to change configuration depending on the environment和External Configuration上的Spring Boot参考部分了解详情。