如何在SpringBoot中将.env文件变量导入application.properties配置文件
Spring Boot加载.env变量到配置文件的实现方法
方案1:Spring Boot 2.4+ 原生支持(无额外依赖,推荐)
2.4及以上版本的Spring Boot已经原生支持直接导入.env文件,不需要引入第三方依赖。
步骤1:配置导入.env文件
在application.properties最顶部加入以下配置:
spring.config.import=optional:file:.env
加optional是为了避免.env文件不存在时启动报错,如果强制要求.env存在可以去掉optional:前缀
步骤2:放置.env文件
把.env文件放在项目根目录(打包后可以放在jar包同级目录),内容示例:
PORT=12345
步骤3:引用变量
在application.properties中用${变量名}的格式引用即可:
server.port=${PORT} # 可以加默认值,变量不存在时自动使用默认值:server.port=${PORT:8080}
如果需要使用你示例中的$PORT格式,额外添加以下配置即可生效:
spring.placeholders.prefix=$ spring.placeholders.suffix=
方案2:低版本Spring Boot使用dotenv依赖
如果你的Spring Boot版本低于2.4,可以引入第三方dotenv starter实现自动加载。
步骤1:引入依赖
Maven配置(pom.xml):
<dependency> <groupId>io.github.mekao</groupId> <artifactId>spring-boot-dotenv-starter</artifactId> <version>2.3.0</version> </dependency>
Gradle配置(build.gradle):
implementation 'io.github.mekao:spring-boot-dotenv-starter:2.3.0'
注意依赖版本要和Spring Boot大版本匹配
后续放置.env文件和引用变量的操作和方案1完全一致。
方案3:启动前手动导出环境变量
你也可以在启动应用前手动把.env文件的变量加载到系统环境变量中,Spring Boot会自动读取所有系统环境变量,不需要修改项目配置。
Linux/macOS 启动命令:
# 先加载.env变量,再启动jar包 export $(xargs < .env) java -jar 你的应用包名.jar
Windows 命令行启动命令:
# 先加载.env变量,再启动jar包 for /f "tokens=*" %i in (.env) do set %i java -jar 你的应用包名.jar
提示:.env文件通常存储数据库密码、接口密钥等敏感信息,记得把它加入.gitignore文件,避免提交到代码仓库造成信息泄露。
内容的提问来源于stack exchange,提问作者Vito Lipari
相关产品推荐
相关产品推荐

