【问题标题】:Java Spring application.propperties environment variables or defaultJava Spring application.properties 环境变量或默认值
【发布时间】:2020-03-22 15:31:34
【问题描述】:

我正在尝试对生产管道进行完整的开发。

在这种情况下,我想让 Jenkins 作业在完成新提交后部署 Java Spring 应用程序。

我的一些 applications.properties 的示例是:

spring.datasource.url=jdbc:mariadb://localhost:3306/application-api?serverTimezone=CET
spring.datasource.username=USERNAME
spring.datasource.password=PASSWORD

一旦你在 git 存储库中拥有它,你的凭据就会被存储起来,并且每个人都可以看到。我还没有计划公开任何内容,但将 application.properties 和密码存储在 git 存储库中似乎是个坏主意。

所以最好的情况是我想要这样的东西,我可以在我的部署服务器上设置环境变量: spring.datasource.username=${DB_PASS}:PASSWORD 如果环境变量DB_PASS 不存在

我不知道如何实现这一目标。我已经看到了@Value 的用法,但我不知道如何将它与给定的应用程序属性一起使用。

【问题讨论】:

标签: java spring spring-boot properties


【解决方案1】:

您也可以将所有属性用作环境变量。

只需将名称设为大写并替换 .由_

SPRING_DATASOURCE_URL=jdbc:mariadb://localhost:3306/application-api?serverTimezone=CET
SPRING_DATASOURCE_USERNAME=USERNAME
SPRING_DATASOURCE_PASSWORD=PASSWORD

请阅读文档: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config

【讨论】:

  • 该链接帮助我发现了配置文件属性的使用情况。但这仍然是替换回购的问题
【解决方案2】:

为什么要将 github 凭据存储在 application.properties 中?

考虑通过 Webhooks 将 Jenkins 连接到 github:

Here is the plugin for Jenkins

Here is a tutorial on setting up and using Github webhooks with Jenkins

2020 年 3 月 24 日编辑: 您可以考虑拥有一个项目外部的属性文件,并使用@PropertySource 之类的东西将其添加到类路径中(只需不要提交它)。此外,一旦你构建了你的项目,你可以在同一个目录中放置一个属性文件,当你启动你的 spring boot 应用程序时,它会默认被拾取。

例子:

C:<path to project>/target/project.jar

C:<path to project>/target/custom-properties.properties

然后

custom-properties.properties

将在启动时加载。

【讨论】:

  • 我不存储 github 的凭证,而是存储例如数据库、API 密钥或任何其他秘密。一旦我提交了 application.properties,它将以纯文本形式保存
  • 你为什么要把它保存在 application.properties 中?
  • @Simon 除了系统/环境变量还有什么替代方法
猜你喜欢
  • 2022-12-16
  • 2021-08-23
  • 1970-01-01
  • 2016-11-15
  • 2016-06-08
  • 2020-09-18
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
相关资源
最近更新 更多