12因素app配置和Java

时间:2014-08-15 16:57:56

标签: java config 12factor

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

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

3 个答案:

答案 0 :(得分:6)

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

要支持多种配置方法,最佳做法是:

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

有关详细信息,请参阅defining config vars for Java apps上的Heroku的说明。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

点击以下链接即可找到入门指南

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