Spring Boot没有将系统环境变量加载到application.properties中。
Spring Boot没有将系统环境变量加载到application.properties中。
我已将一些简单的数据库凭据导出为环境变量存储在我的机器上。
export MYSQL_USER=root export MYSQL_PASS=pass
我试图将它们动态加载到我的Spring Boot配置文件中,但无济于事。我开始相信这是因为应用程序运行在TomCat容器内,因此与机器的环境变量隔离。
开发环境应用程序属性文件
spring.datasource.username = ${MYSQL_USER}
然而,它仍然被视为字面文本${MYSQL_USER}
。Spring Boot是否具有读取系统环境变量的能力?
问题出现的原因是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服务器,以使配置生效。
希望这能帮助到你解决问题。