我正在将Mac OS Mojave与Spring STS版本3.9.7配合使用。
因此,我试图将一些环境变量(例如数据库用户名和密码)加载到我的application.properties文件中,但是Spring无法将它们加载到其中。
我使用此命令来设置用户名环境变量:
IF NOT EXISTS (SELECT 1
FROM BANCO_DE_DADOS.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'MinhaTabela' AND
COLUMN_NAME = 'CodZona'
)
BEGIN
EXEC sp_executesql N'ALTER TABLE BANCO_DE_DADOS..MinhaTabela ADD [CodZona] [int] NULL';
END;
GO
update BANCO_DE_DADOS..MinhaTabela
set CodZona = 1
where CodZona < 1 or CodZona is null;
,当我回显$ ABC_DB_UNAME 或 printenv 时,我可以看到该值。
在我的application.properties文件中,将用户名设置如下:
export ABC_DB_UNAME=some_username
现在,当从IDE本身运行spring sts时,它无法获取这些值,并引发
的异常。拒绝访问ABC_DB_UNAME @ database_endpoint。
它清楚地表明spring sts并没有获取我的环境变量。
让我更感到困惑的是,当我使用以下命令通过maven运行spring应用程序时,它会拾取环境变量,并且工作正常。
spring.datasource.username=${ABC_DB_UNAME}
但是使用mvn命令,我不知道如何使IDE触发断点以供我调试。
编辑:使用代码System.getenv(“ ABC_DB_UNAME”)和System.getProperty(“ ABC_DB_UNAME”)测试并尝试打印环境变量也将返回null,但maven仍然有效。 >
答案 0 :(得分:1)
我认为环境变量是在终端中临时设置的。因此mvn spring-boot:run
有效。您可以在其他终端上运行它,但应该会失败
您需要在bashrc(mac)中设置$ {ABC_DB_UNAME},以使其永久保存。 或者您可以在运行应用程序时将环境变量作为参数传递。