如何提供来自文件的 Spring Boot application.yml 属性值
有没有办法从文件中提供春季启动属性值文本?我尝试了以下类似的事情,但它不起作用。
spring:
security:
oauth2:
client:
registration:
google:
client-secret: classpath:./secrets/google-client-secret.txt
client-id: classpath:./secrets/google-client-id.txt
秘密文件夹是在资源文件夹中创建的
Is there a way for providing spring boot properties value text from file? I tried something like below but it's not working.
spring:
security:
oauth2:
client:
registration:
google:
client-secret: classpath:./secrets/google-client-secret.txt
client-id: classpath:./secrets/google-client-id.txt
The secrets folder is created inside resources folder
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你实现这个的方式是不可能的。还有其他几种方法可以实现 外部化配置不过。
使用环境变量
在 IDE 中,您可以配置环境变量。如果环境变量的名称与属性的名称匹配,您可以从
application.yml
中删除参数。例如:您还可以以不同的方式命名环境变量。例如:
在这种情况下,您必须将
application.yml
更改为:使用单独的 YAML 文件
另一种可能性是创建一个名为
secrets.yml
的文件,它包含您的实际值并将其放入.gitignore
中。该解决方案最接近您想要的。例如,在
secrets.yml
中,您可以输入:现在您可以使用
--spring.config.additional-location
VM 参数加载它(也可以在您的 IDE 中进行配置) ):使用 VM 参数
说到 VM 参数,您还可以将属性本身作为 VM 参数传递。
例如:
与环境变量一样,您可以使用较短的 VM 参数并在
application.yml
中引用它们。例如,使用-Dgoogle.client-id=actual-id
并将${google.client-id}
放入application.yml
。还有其他几种提供外部化配置的方法,因此我建议您阅读我之前链接的文档。
The way you're implementing this is not possible. There are several other ways to implement externalized configuration though.
Using environment variables
In your IDE you can configure environment variables. If the names of the environment variables match the name of the property, you can remove the parameters from
application.yml
. For example:You can also name your environment variables differently. For example:
In that case, you have to change your
application.yml
to this:Using a separate YAML file
Another possibility is to create a file called
secrets.yml
, make it contain your actual values and put it in.gitignore
. This solution is the closest to what you want.For example, in
secrets.yml
you can put:Now you can load it by using the
--spring.config.additional-location
VM argument (also configurable in your IDE):Using VM arguments
Speaking of VM arguments, you can also pass the properties themselves as VM arguments.
For example:
Like with the environment variables, you can use shorter VM arguments and reference them in
application.yml
. For example by using-Dgoogle.client-id=actual-id
and putting${google.client-id}
in yourapplication.yml
.There are several other ways of providing externalized configuration, so I suggest you read the documentation I linked earlier.
恐怕不可能这样做。
我建议您使用环境变量来实现这一目标:
这样,秘密将与环境相关,而不是绑定到YML文件。
I'm afraid that it is not possible to do that.
What I recommend you tho is to use environment variables to achieve that:
This way the secrets will be tied to the environment and not into the yml file.