You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中如何每次调用方法时动态读取Shell变量值?

解决方案:实时读取Shell环境变量

@Value注解是在Bean初始化阶段完成值注入的,所以只会读取一次环境变量。要实现每次调用方法都获取最新值,可以通过以下两种方式:

方式一:使用Spring Environment对象

Spring的Environment接口提供了实时读取环境变量的能力,每次调用getProperty()方法都会去获取当前最新的环境变量值。

代码示例:

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

public class MyClass {
    private final Environment environment;

    // 构造注入Environment(推荐构造注入而非字段注入)
    @Autowired
    public MyClass(Environment environment) {
        this.environment = environment;
    }

    public String getShellVar() {
        // 每次调用都会读取最新的SHELL_VAR值
        return environment.getProperty("SHELL_VAR");
    }
}

方式二:直接使用System.getenv()

也可以直接通过JVM的System.getenv()方法读取环境变量,效果和使用Environment类似:

代码示例:

public class MyClass {
    public String getShellVar() {
        return System.getenv("SHELL_VAR");
    }
}

注意事项

需要注意的是:JVM进程启动时会继承当前Shell的环境变量作为快照,如果JVM运行期间外部修改了Shell环境变量,JVM默认不会自动感知到新值。这种场景下,你需要通过其他机制(比如定时读取配置文件、使用配置中心推送更新等)来获取最新的变量值。

内容的提问来源于stack exchange,提问作者Mr. Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:04:50