Spring Boot没有将系统环境变量加载到application.properties中。

13 浏览
0 Comments

Spring Boot没有将系统环境变量加载到application.properties中。

我已将一些简单的数据库凭据导出为环境变量存储在我的机器上。

export MYSQL_USER=root
export MYSQL_PASS=pass

我试图将它们动态加载到我的Spring Boot配置文件中,但无济于事。我开始相信这是因为应用程序运行在TomCat容器内,因此与机器的环境变量隔离。

开发环境应用程序属性文件

spring.datasource.username = ${MYSQL_USER}

然而,它仍然被视为字面文本${MYSQL_USER}。Spring Boot是否具有读取系统环境变量的能力?

0
0 Comments

问题出现的原因是Spring Boot在加载系统环境变量时没有将其加载到application.properties中。解决方法是将变量定义到应用服务器(如tomcat/jboss)中,这样application.properties才能获取到它们。

具体操作方法取决于应用服务器的不同。如果使用的是tomcat,可以按照以下步骤进行操作:

1. 在Tomcat的/bin目录下创建一个文件setenv.sh(可以使用命令touch setenv.sh)。

2. 使用文本编辑器打开setenv.sh文件(可以使用sudo nano setenv.sh命令),并写入以下内容:

#!/bin/sh
export JAVA_OPTS="-DMYSQL_USER=myuser"

3. 确保重新启动tomcat服务器,以使配置生效。

希望这能帮助到你解决问题。

0