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

茅侃侃
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 管理机密
添加回答
举报
0/150
提交
取消