9

我正在阅读 12 因素应用程序宣言http://12factor.net/。宣言建议将应用程序的配置数据存储在环境变量中。这是否意味着数据库用户名/密码、资源 URL 等属性应该存储为 Java Env 变量的一部分而不是属性文件?这是一种安全的信息存储方式吗?对我来说,这似乎是一种非常笨重的信息存储方式。有没有可以分享的最佳实践/经验?

我能想到的一种选择是在景观中运行一个单独的配置服务,并使用 Env 属性连接到配置服务,然后查询配置服务以获取更多详细的配置数据。

4

3 回答 3

6

12 要素应用程序旨在在协调独立 UNIX 进程的平台上运行。UNIX 进程是通过环境变量配置的。虽然属性文件是一种成熟的 Java 约定,但 UNIX 进程是一种与语言无关的配置进程的方式。

为了支持多种配置方法,一个好的最佳实践是:

  • 从进程环境中读取System.getenv('CONFIG'),如果为 null
  • 从属性文件中读取properties.getProperty('CONFIG'),如果为 null
  • 回退到默认值

有关更多详细信息,请参阅 Heroku 关于为 Java 应用程序定义配置变量的说明。

于 2014-11-26T02:38:02.770 回答
1

我们可以使用 Spring 集中配置来做到这一点,使用集中配置我们可以将所有项目的配置提交到单个存储库中,稍后在编写构建脚本时,我们可以从该存储库覆盖我们的本地配置以使用该集中配置。

单击下面的链接,您将找到入门指南

https://spring.io/guides/gs/centralized-configuration/

于 2016-10-12T06:01:24.473 回答
1

这篇关于如何在 Java 中实现 12 因子配置的文章可能会有所帮助:https ://blog.codacy.com/12-factor-config-for-java/

它由自动代码审查工具 Codacy 发布。

于 2019-11-26T01:15:17.737 回答