在 Spring Boot 中使用 dotenv 文件
Posted
技术标签:
【中文标题】在 Spring Boot 中使用 dotenv 文件【英文标题】:Using dotenv files with Spring Boot 【发布时间】:2020-02-21 06:22:29 【问题描述】:我想使用 dotenv 文件来配置我的 Spring Boot 应用程序。
最好的方法是什么?
在Ruby 或Node 世界中,我只是创建.env
文件并将所有内容从那里加载到应用程序环境。
我不喜欢为我的应用等创建单独的配置文件。我只想将我在文件中指定的任何环境变量加载到我的应用中。
【问题讨论】:
【参考方案1】:实际上有一个'dotenv'工具的java端口。
https://github.com/cdimascio/dotenv-java
【讨论】:
嗯,它与 ruby 和节点世界中的 dotenv 家伙做的工作不同。首先,它不能在进程中注入环境变量,原因很简单——JVM 禁止这样做(github.com/cdimascio/java-dotenv#faq)其次,它没有与 Spring Boot 集成。我将为此编写解决方法,稍后将使用完整的解决方案编辑答案。顺便说一句,它不支持针对不同环境(开发、生产等)的不同 .env 文件。 Java 世界很艰难。 请注意,您可以通过使用 java-dotenv 的“文件名”属性为每个环境使用不同的 .env 文件。话虽如此,更广泛的 dotenv 社区建议每个环境使用一个 .env 文件【参考方案2】:我已经在 Spring 和 dotenv 之间建立了适当的集成。
关注thread 了解动机。然后查看库:
在此处查看 spring-dotenv 库:https://github.com/paulschwarz/spring-dotenv
该库包含一个示例应用程序来向您展示如何使用它,您会看到与 Spring 的集成非常自然:
https://github.com/paulschwarz/spring-dotenv/tree/master/application/src/main/resources
我在设计这个库时坚持了两个原则:
-
https://12factor.net/config
让您的代码完全不知道 dotenv,以便您继续使用常规 Spring 技术引用您的 application.yml/application.properties 文件。没什么好笑的。
【讨论】:
【参考方案3】:在 spring boot 中只需在 application.yml 中执行此操作
---
spring:
config:
import: optional:file:.env[.properties]
username: $USERNAME
或者如果你使用 application.properties
spring.config.import=optional:file:.env[.properties]
username=$USERNAME
然后@value 和所有其他东西都会起作用
【讨论】:
以上是关于在 Spring Boot 中使用 dotenv 文件的主要内容,如果未能解决你的问题,请参考以下文章