猿问

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

我的 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"


饮歌长啸
浏览 112回答 2
2回答

holdtom

您可以通过调用该文件来做到这一点application.properties。但请记住,属性名称应类似于 yaml 结构:spring.datasource.url="jdbc:xxxx"spring.datasource.user="username"spring.datasource.pwd="password"

茅侃侃

这是所有开发人员普遍关心的问题,即如何保护数据库凭据以防止任何误用,但相信我,将凭据保存在单独的文件中不会给情况增加太多价值。如果有人能够访问您的 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 管理机密
随时随地看视频慕课网APP

相关分类

Java
我要回答