提问者:小点点

运行时重新加载环境变量


是否有可能从Java应用程序监听环境变量中的更改事件? 我很想知道如何实际识别底层环境变量在运行时已经更改&; 照做? 在下面的代码中,我希望当env.var在环境中发生变化时通知应用程序。 我们在PCF平台上使用的是Java 8。

@Value("${env.var}")
private String envVar;

共1个答案

匿名用户

根据您的操作系统平台,这是不可能的; 每个进程都获得环境变量的副本, 实际上并不存在“全局”环境表--负责启动大多数进程的进程的环境变量似乎是全局的, 也许,当您从启动进程的进程继承环境变量时(除非在启动进程期间,应用了对环境变量的修改),所以您实际上要求的是“我能观察到环境变量的任何变化吗,就像在产生我的进程中一样”,从安全角度来看,这是非常复杂的,这导致了相当明显的答案:不,您不能这么做。

也许后退一步,描述一下你试图解决的实际问题。 也许你想要实时配置你的应用程序,你选择了“这个设置将通过我的操作系统的环境变量系统传递给应用程序”--这是实现设置系统目标的多种方法之一。 这是一种不适合实时更新的方式。

如果你通过一个文件来传递设置,那么就简单多了,比如,保持对文件的“监视”,并在它发生变化时触发对它的重新读取。