环境变量的运行时重载

Runtime reload of environment variables

是否可以从 java 应用程序监听环境变量中的更改事件?我有兴趣知道如何实际识别底层环境变量在运行时已更改并对其采取行动?在下面的代码中,我希望在 env.var 环境发生变化时通知应用程序。我们在 PCF 平台上使用 Java8。

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

根据您的 OS 平台,这是不可能的;每个进程都会获得环境变量的副本,实际上并没有 'global' 环境 table 这样的东西 - 负责启动大多数进程的进程的环境变量似乎是全局的,也许,当您从启动进程的进程继承环境变量时(除非在启动进程期间应用了对环境变量的修改),所以您有效要求的是 'can I observe any changes to environment variables as in the process that spawned me',即,除其他外,从安全角度来看相当多毛,这导致了相当明显的答案:不,你不能那样做。

也许退后一步,描述您要解决的实际问题。也许您想要实时配置您的应用程序的能力,并且您选择了“此设置将通过我的 OS 的环境变量系统传送到应用程序”——这是实现目标的众多方法之一有一个设置系统。这种方式不太适合实时更新。

如果您改为通过文件传送设置,那么,将 'watch' 保存在文件上并在文件更改时触发重新读取它会简单得多,例如。