java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot yml文件中读取Windows环境变量

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

作者:连杰李

本文介绍了在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 中设置环境变量

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

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

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

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

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 开发工具的安装路径(需手动配置)

小贴士

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

您可能感兴趣的文章:
阅读全文