我正在尝试配置我的Spring Boot应用程序,以便在存在某些环境变量时使用特定的数据源。例如,如果 MY_PROD_DATASOURCE
环境变量存在,我想用我的生产数据源;否则,我想使用我的本地数据源(相同类型)。
我已经发现 Spring参考中的一些东西 这解释了如何在我的声明中声明单个数据源 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
但是,我没有看到如何在此文件中有条件地更改数据源属性。还有另一种方法吗?
在Spring Boot中,您可以:
外部化 application.properties
从您的jar并通过添加路径作为启动参数为每个环境提供文件:
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
。
有关详细信息,请参阅Spring Boot参考部分 如何根据环境更改配置 和 外部配置。