在SpringBoot的yml配置文件中读取Windows系统环境变量的方法

 更新时间:2026年03月26日 08:26:59   作者:连杰李  
本文介绍了在SpringBoot的application.yml配置文件中使用${VARIABLE_NAME}占位符引用Windows系统环境变量的方法,并提供了设置默认值、在Java代码中获取环境变量值的建议,同时,文章详细讲述了如何通过系统设置和命令行设置环境变量,需要的朋友可以参考下

SpringBoot yml 配置文件,读取 Windows 系统环境变量

在 Spring Boot 的 application.yml 配置文件中读取 Windows 系统环境变量,主要使用 ${VARIABLE_NAME} 占位符语法。

在 yml 文件中引用环境变量

application.yml 中,你可以直接使用 ${环境变量名} 来引用对应的 Windows 系统环境变量。

基本语法:

# 假设 Windows 系统环境变量中设置了 MY_SERVER_PORT=9090
server:
  port: ${MY_SERVER_PORT}

推荐做法:设置默认值
为了防止环境变量未设置导致应用启动失败,强烈建议为占位符提供一个默认值。语法为 ${VARIABLE_NAME:default_value}

# 如果环境变量 MY_SERVER_PORT 未设置,则使用默认值 8080
server:
  port: ${MY_SERVER_PORT:8080}
# 数据库配置的常见用法
spring:
  datasource:
    url: ${DB_URL:jdbc:mysql://localhost:3306/mydb}
    username: ${DB_USERNAME:root}
    password: ${DB_PASSWORD:secret}

在这个例子中,如果系统里设置了 DB_URL,就使用它的值;如果没设置,就使用冒号后面的默认值。

在 Windows 中设置环境变量

你可以通过以下两种主要方式来设置环境变量:

通过系统设置(永久生效)

  • 右键点击“此电脑”或“我的电脑”,选择“属性”。
  • 点击“高级系统设置”。
  • 在“系统属性”窗口中,点击“环境变量”按钮。
  • 在“系统变量”区域,点击“新建”来添加新的环境变量,或“编辑”来修改已有的变量。
  • 设置完成后,需要重启命令行窗口或应用才能生效。

通过命令行(当前会话生效)

  • 打开命令提示符(CMD)。
  • 使用 set 命令来设置一个临时环境变量,例如:
set MY_SERVER_PORT=9090
set DB_URL=jdbc:mysql://localhost:3306/mydb
  • 这种方式设置的环境变量只在当前命令行窗口有效,关闭窗口后即失效。

在 Java 代码中读取

除了在 yml 文件中引用,你也可以直接在 Java 代码中获取环境变量的值。

使用 @Value 注解

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    // 直接注入环境变量,同样可以设置默认值
    @Value("${MY_SERVER_PORT:8080}")
    private int serverPort;
}

使用 Environment 对象

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    @Autowired
    private Environment env;

    public void printConfig() {
        // 通过 getProperty 方法获取
        String dbUrl = env.getProperty("DB_URL");
        System.out.println("DB URL: " + dbUrl);
    }
}

使用 @ConfigurationProperties 注解
这种方式适合将一组相关的配置属性绑定到一个 Java Bean 中。

配置优先级

了解 Spring Boot 的配置加载顺序非常重要,因为它决定了最终生效的值。当同一个配置项在多个地方被定义时,优先级高的会覆盖优先级低的。

常见的配置源优先级从高到低排列如下:

  1. 命令行参数 (例如 java -jar app.jar --server.port=9091)
  2. 系统环境变量 (例如 set SERVER_PORT=9090)
  3. JAR 包外部的 application.yml
  4. JAR 包内部的 application.yml

这意味着,如果你在命令行中指定了 --server.port=9091,它将覆盖 application.yml 文件中的任何 server.port 配置,以及系统环境变量 SERVER_PORT 的值。

终端获取环境变量命令

在 Windows 系统中,根据你使用的终端类型(CMD 或 PowerShell),获取环境变量的命令有所不同。以下是常用命令汇总:

1. 命令提示符 (CMD)

这是 Windows 最传统的命令行工具。

目的命令示例
查看指定变量echo %变量名%echo %PATH%``echo %JAVA_HOME%
查看所有变量set`set``set
  • 注意:在 CMD 中直接输入变量名(如 JAVA_HOME)会报错,必须配合 echo 和百分号使用。

2. PowerShell

这是更现代的命令行工具,功能更强大。

目的命令示例
查看指定变量$env:变量名$env:PATH``$env:JAVA_HOME
查看所有变量Get-ChildItem Env:Get-ChildItem Env:``gci env: (简写)

3. 常见环境变量对照表

为了方便你测试,这里列出了一些 Windows 中常见的系统环境变量:

变量名说明
%PATH% / $env:PATH可执行文件的搜索路径
%USERPROFILE% / $env:USERPROFILE当前用户的主目录(如 C:\Users\YourName
%TEMP% / $env:TEMP存放临时文件的目录
%COMPUTERNAME% / $env:COMPUTERNAME计算机名称
%JAVA_HOME% / $env:JAVA_HOMEJava 开发工具的安装路径(需手动配置)

小贴士

  • 临时与永久:上述命令查看的是当前会话生效的变量。如果你在系统设置中修改了环境变量,需要重新打开终端窗口才能看到更新后的值。
  • Linux 用户注意:Windows CMD 不使用 exportenv 命令,这些是 Linux/Unix 系统的命令。

以上就是在SpringBoot的yml配置文件中读取Windows系统环境变量的方法的详细内容,更多关于SpringBoot yml文件中读取Windows环境变量的资料请关注脚本之家其它相关文章!

相关文章

  • Java程序中添加播放MIDI音乐功能的实现方法详解

    Java程序中添加播放MIDI音乐功能的实现方法详解

    本篇文章是对在Java程序中添加播放MIDI音乐功能的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • java冒泡排序简单实例

    java冒泡排序简单实例

    本文主要介绍了JSONjava冒泡排序实例与思路分析。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • eclipse老是自动跳到console解决办法

    eclipse老是自动跳到console解决办法

    eclipse启动服务后,想看一些properties信息或者别的,但老是自动跳转到console页面,本文给大家介绍了解决办法,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • SpringBoot @Retryable注解使用

    SpringBoot @Retryable注解使用

    SpringBoot提供的@Retryable注解可以方便地实现方法的重试机制,可以在不侵入原有逻辑代码的方式下,优雅地实现重处理功能
    2024-12-12
  • SpringBoot中Aware接口使用及原理解析

    SpringBoot中Aware接口使用及原理解析

    在Spring中存在一个Aware接口,实现该接口可以让我们的Bean获取到Spring容器中特定的资源,但该接口只是个标记接口,不存在任何方法,本文将给大家详细介绍一下SpringBoot中Aware接口使用及原理,需要的朋友可以参考下
    2023-08-08
  • Java从单体架构升级到微服务要注意的一些问题

    Java从单体架构升级到微服务要注意的一些问题

    这篇文章主要介绍了Java从单体架构升级到微服务要注意的一些问题,对架构感兴趣的同学,可以参考下
    2021-04-04
  • Java 重写时应当遵守的 11 条规则

    Java 重写时应当遵守的 11 条规则

    这篇文章主要介绍了Java 重写时应当遵守的 11 条规则,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • SpringCloud Eureka服务的基本配置和操作方法

    SpringCloud Eureka服务的基本配置和操作方法

    Eureka是Netflix开源的一个基于REST的服务治理框架,主要用于实现微服务架构中的服务注册与发现,Eureka是Netflix开源的服务发现框架,用于在分布式系统中实现服务的自动注册与发现,本文介绍SpringCloud Eureka服务的基本配置和操作方法,感兴趣的朋友一起看看吧
    2023-12-12
  • 详谈Spring对IOC的理解(推荐篇)

    详谈Spring对IOC的理解(推荐篇)

    下面小编就为大家带来一篇详谈Spring对IOC的理解(推荐篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • java对象强转成object的方法实现

    java对象强转成object的方法实现

    在 Java 编程中,有时候我们需要将一个具体的对象强制转换成 Object 类型,本文主要介绍了java对象强转成object的方法实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论