如何将Linux服务器环境变量映射到Spring Boot的application properties配置
Linux环境变量映射到Spring application.properties配置文件的实现方法
方法1:配置文件中显式引用环境变量(推荐,可读性高)
Spring Boot原生支持占位符语法,可以直接在配置文件中引用系统环境变量:
- 第一步:先在Linux服务器中定义需要的环境变量
- 临时生效(仅当前终端会话有效):
export MAIL_USER=你的邮箱账号 export MAIL_PWD=你的邮箱授权码 export SMTP_PORT=465 - 永久生效:将上述export语句写入
/etc/profile(全局所有用户生效)或~/.bashrc(仅当前用户生效),执行source /etc/profile或source ~/.bashrc让配置立刻生效。
- 临时生效(仅当前终端会话有效):
- 第二步:修改application.properties配置,用
${环境变量名}替换原占位符即可:spring.mail.username=${MAIL_USER} spring.mail.password=${MAIL_PWD} spring.mail.properties.mail.smtp.port=${SMTP_PORT}补充:如果需要设置默认值,避免环境变量缺失导致启动失败,可以写成
${环境变量名:默认值},例如spring.mail.properties.mail.smtp.port=${SMTP_PORT:587}
方法2:利用Spring Boot宽松绑定规则自动映射(无需修改配置文件)
Spring Boot支持宽松绑定规则,会自动将大写+下划线格式的系统环境变量,匹配到点分隔的配置项:
- 直接在Linux中按照规则设置环境变量:把配置项的
.全部替换为_,所有字母转为大写即可,示例如下:export SPRING_MAIL_USERNAME=你的邮箱账号 export SPRING_MAIL_PASSWORD=你的邮箱授权码 export SPRING_MAIL_PROPERTIES_MAIL_SMTP_PORT=465 - 无需修改application.properties中的原有配置,启动项目时Spring会自动用环境变量的值覆盖配置文件中的对应配置。
方法3:启动命令中动态传参
如果不想修改配置文件,也可以在项目启动时直接从环境变量取值传入:
java -jar 你的项目jar包名.jar \ --spring.mail.username=$MAIL_USER \ --spring.mail.password=$MAIL_PWD \ --spring.mail.properties.mail.smtp.port=$SMTP_PORT
内容的提问来源于stack exchange,提问作者Nesan Mano
相关产品推荐
相关产品推荐

