我正在使用 Mac OS Mojave 和 Spring STS 版本 3.9.7。
因此,我尝试将一些环境变量(例如数据库用户名和密码)加载到我的 application.properties 文件中,但 Spring 无法将它们加载到。
我使用此命令来设置用户名环境变量:
export ABC_DB_UNAME=some_username
当我echo $ABC_DB_UNAME或printenv时,我可以看到该值。
在我的 application.properties 文件中,我将用户名设置如下:
spring.datasource.username=${ABC_DB_UNAME}
现在,当从 IDE 本身运行我的 spring sts 时,它无法获取这些值,并且会抛出一个异常,
access is denied for ABC_DB_UNAME@database_endpoint.
它清楚地表明 spring sts 没有获取我的环境变量。
让我更困惑的是,当我使用下面的命令通过 maven 运行 spring 应用程序时,它会获取环境变量并且工作得很好。
mvn spring-boot:run
但是使用 mvn 命令我不知道如何让 IDE 触发断点供我调试。
编辑:测试并尝试使用代码 System.getenv("ABC_DB_UNAME") 和 System.getProperty("ABC_DB_UNAME") 打印环境变量也会返回 null,但 maven 仍然有效。
最佳答案
我认为环境变量是在终端中临时设置的。因此,mvn spring-boot:run
有效。您可以在不同的终端中运行它,它应该会失败
您需要在 bashrc (mac) 中设置 ${ABC_DB_UNAME} 才能永久保留它。 或者您可以在运行应用程序期间将环境变量作为参数传递。
关于java - Spring STS不加载环境变量但运行maven可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782840/