【问题标题】:How to use environment variables for Springboot application using a .env file?如何使用 .env 文件为 Spring Boot 应用程序使用环境变量?
【发布时间】:2020-03-11 22:17:42
【问题描述】:

我正在尝试构建一个连接到数据库的 Springboot 应用程序。我想使用包含敏感内容的.env 文件。首先,我通过将端口更改为 8081 进行测试。 我的 .env 文件有以下内容

PORT=8081

我的application.properties有以下内容

server.port=${PORT}

我有一个无法解析 PORT 的运行时错误,当我不知道如何将 .env 文件提供给属性时,这是可以预料的。

有人能指出我正确的方向吗?

PS:我以端口为例,如果成功,我还将使用 .env 文件设置数据库凭据。

更新: 我更喜欢使用 .env 文件,因为当使用 AWS CodePipeline 部署应用程序时,我可以在 CodeBuild 阶段设置环境变量,我将在此阶段构建 jar 并最终构建 docker 映像。像这样。

EnvironmentVariables:
  - Name: PORT
    Value: "{resolve:secretsmanager:DBCredentials:SecretString:port}"

错误是Caused by java.lang.IllegalArgumentException: Could not resolve placeholder 'PORT' in value "${PORT}"

【问题讨论】:

  • 能否请您在运行程序时显示错误列表?

标签: amazon-web-services spring-boot aws-codepipeline


【解决方案1】:

我认为你有反应方法!但是在spring中使用多个环境,最好有一个properties文件或者yaml by environment。

Ps:文件名必须像application-{environment name}.properties这样命名,并且必须在资源文件夹中。

对于开发人员: 文件名:application-dev.properties

server.port=8089

对于 IT: 文件名:application-it.properties

server.port=8090

application.properties 文件中,通常我们会在所有环境之间放置一些共享属性,我们可以添加属性:spring.profiles.active = dev // 您可以根据需要放置所需的内容。如果您有多个个人资料,您可以用“,”将它们分开。

更多详情可以查看spring profiles

【讨论】:

  • 如果您使用的是 GitHub,我假设您不会将凭据保存在那里。你会怎么处理?
  • 您在谈论安全主题!有很多方法,你可以输入一个加密的密码......,如果上面的解决方案解决了你的问题,请将其标记为已解决以关闭问题
猜你喜欢
  • 1970-01-01
  • 2020-12-30
  • 2022-10-19
  • 2017-06-12
  • 2016-06-26
  • 2017-04-20
  • 1970-01-01
  • 2019-03-15
  • 2021-11-09
相关资源
最近更新 更多