为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以将 application.yml 变量放入属性文件中?

是否可以将 application.yml 变量放入属性文件中?

饮歌长啸 2023-09-13 18:11:28
我的 Spring Boot 项目使用 application.yml 作为配置,我不想在其中写入数据库凭据,因为 yml 文件是源代码的一部分,它将被推送到公共代码存储库中。因此,我需要将凭据放入属性文件中,并将属性文件放在应用程序主机服务器上的某个位置。那么,是否可以将 application.yml 中的表达式外部化到属性文件中?例如带有 application.yml 的 sprint 启动应用程序spring:  datasource:    jdbc-url: ${url}    username: ${user}    password: ${pwd}然后我们可以将凭据放入 app.properties 中,如下所示,并将该文件放入主机服务器中。url="jdbc:xxxx"user="username"pwd="password"
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您可以通过调用该文件来做到这一点application.properties。


但请记住,属性名称应类似于 yaml 结构:


spring.datasource.url="jdbc:xxxx"

spring.datasource.user="username"

spring.datasource.pwd="password"


查看完整回答
反对 回复 2023-09-13
?
茅侃侃

TA贡献1842条经验 获得超21个赞

这是所有开发人员普遍关心的问题,即如何保护数据库凭据以防止任何误用,但相信我,将凭据保存在单独的文件中不会给情况增加太多价值。

如果有人能够访问您的 application.yml,那么也可以访问位于单独文件夹中的属性文件。

了解您的问题后,您需要将代码推送到公共存储库中,您必须保护您的代码。我的投入很少。

  • 您不需要单独的属性文件和 application.yml 中的相应变量,您可以提供您的值,并且在应用程序启动期间始终可以在应用程序外部覆盖它们。

例如

spring:
  datasource:
    jdbc-url: myFakeURL
    username: MyFakeUserName
    password: myFakePAssword

一旦定义了它们,您就可以覆盖它们,例如

java -jar -Dspring.datasource.jdbc-url=myRealURL  -Dspring.datasource.jdbc-username=myRealUserName  -Dspring.datasource.password=myRealpassword   myApplication.jar

请记住:这是一种方法,还有其他方法

您可以创建 shell 脚本/批处理文件(包含这些属性)并在启动应用程序之前执行

使用 Spring Boot,您必须考虑做几件事,即加密您的属性值。Spring 为Jasypt提供了对加密属性的良好支持,相信我,您几乎不需要付出任何努力

您还可以探索使用 Vault 管理机密


查看完整回答
反对 回复 2023-09-13
  • 2 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信