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

时间:2019-09-30 21:55:58

标签: java spring-boot yaml

我的春季启动项目使用application.yml作为配置,并且我不想在其中写入数据库凭据,因为yml文件是源代码的一部分,该源代码将被推送到公共代码存储库中。因此,我需要将凭据放入属性文件中,并将属性文件放在应用程序主机服务器上的某个位置。

那么,可以将application.yml中的表达式外部化为属性文件吗?

例如 使用application.yml冲刺启动应用程序

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

然后,我们可以如下所示将凭据放入app.properties,并将此文件放入主机服务器。

spring:
  datasource:
    jdbc-url: ${url}
    username: ${user}
    password: ${pwd}

2 个答案:

答案 0 :(得分:1)

您可以通过调用文件application.properties来实现。

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

spring.datasource.url="jdbc:xxxx"
spring.datasource.user="username"
spring.datasource.pwd="password"

答案 1 :(得分:0)

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

如果某人能够访问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 

记住:这是一种方式,也有另一种方式

您可以创建外壳脚本/批处理文件(包含这些属性),然后执行,然后再启动应用程序

  

使用弹簧靴时,您必须考虑要做的几件事   即加密您的媒体资源值。春天有美丽的支撑   使用Jasypt获得加密属性,请相信我,   几乎不费力

您还可以浏览Managing Secrets with Vault