【发布时间】:2020-02-05 09:53:50
【问题描述】:
我正在尝试将外部 yml 文件加载到我的 Spring Boot 应用程序中 在我的类路径中,我有 3 个用于 dev prod 和 tls 配置文件的 yml 文件。
我打算做的是加载一个名为“secret.yml”的外部文件,以覆盖 application-{profiles}.yml 文件中的值。
这个“secret.yml”文件包含敏感信息。它将被添加到 gitignore 文件中。
经过一些尝试,我发现只有当我将名称更改为 application-{profiles}.yml 而不是 secret.yml 时,spring 才会覆盖类路径中的值
我尝试添加 spring.config.name=secret,但这对我不起作用。
./mvnw -Dmaven.test.skip=true -Dspring.config.additional-location=file:./secret.yml -Dspring.config.name=secret.yml
你有解决这个问题的办法吗?
[更新]
我导出环境变量export secret="secret.yml"
然后将变量传递给我的命令行
./mvnw -Dmaven.test.skip=true -Dspring.config.additional-location=file:./secret -Dspring.config.name=secret
没有改变
【问题讨论】:
-
我不确定您的相对
file:网址是否有效。您不使用环境变量是否有特殊原因? -
该 url 是有效的,因为当我将文件名重命名为 application-profile 时,它可以工作并且它会覆盖内容。我同意你的看法,环境是最好的解决方案,但我也试图通过外部文件来实现这一点
-
secret.yml是在类路径中还是在当前目录中(如您在此处所期望的那样)。 -
我使用了 file: 所以它不在类路径中。但为了确保,我在类路径中复制了 secret.yml(在 ressources 下),并将命令行更改为 -Dspring.config.location=classpath:secret.yml 并且不覆盖该值
-
标签: java spring spring-boot