【发布时间】:2014-09-22 01:37:09
【问题描述】:
我刚刚阅读了出色的 12 Factor App 文档,它确实在我这里注册了。在Chapter 3 Config中,作者强调:
十二因素应用程序将配置存储在环境变量中(通常缩写为 env vars 或 env)。环境变量很容易在部署之间更改,而无需更改任何代码;与配置文件不同,它们被意外签入代码仓库的可能性很小;与自定义配置文件或其他配置机制(如 Java 系统属性)不同,它们是与语言和操作系统无关的标准。
我想知道这对 Java 项目意味着什么。
通常,当涉及到我的 Java 应用程序时,我认为“环境变量”是我可以从 System.getProperty("blah") 读取的内容。这就是作者在说的吗?我不认为是这样,因为作者明确指出“不像...或其他配置机制,如 Java System Properties...”。
如果不是,那么满足本文档对“env var”定义的与操作系统无关的“env var”的示例是什么?我如何从 Java 代码中读取它?
无论哪种方式,某些进程必须首先在操作系统上设置每个 env var,以便在应用程序运行时设置和可用 var。哪些流程/方法可以进行此类预运行设置?
【问题讨论】:
-
Spring 以一种干净、透明的方式处理所有这些:
foo.value可以从名为foo.value的属性或名为foo_value的环境变量中映射。此外,即使您不使用 Spring,也请查看 Spring Cloud,它会自动处理大量此类注入。
标签: java environment-variables configuration-files system-properties 12factor