我的春季启动项目使用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}
答案 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获得加密属性,请相信我, 几乎不费力