推荐的方法来处理spring-boot应用程序/外部配置?

时间:2014-07-21 16:42:17

标签: java spring configuration spring-boot

在spring boot中处理应用程序配置的推荐方法是什么?例如,我有一些我想从文件(在覆盖链中)加载的东西,比如数据库连接细节。我还想从我的数据库本身加载其他东西(比如运行时可更改的应用程序设置),还有其他我希望允许用户以编程方式进行更改的内容。

我猜我真正拥有的是两个不同的用例,我只需要将它们视为单独处理并使用类似http://commons.apache.org/proper/commons-configuration/之类的方式处理弹簧配置和应用程序配置但是我想确保我是不要错过一些春天(或开机)的做事方式。

我通常会在论坛或邮件列表上问过这个问题,但我知道我们现在应该使用stackoverflow,所以请告诉我是否有更好的解决方案。

2 个答案:

答案 0 :(得分:0)

我通常定义2级配置:

  • 使用@Value("${configurationKey:defaultValue}");
  • 的默认值
  • 使用@PropertySource("${configurationLocation:classpath:}/my-application.properties");
  • 进行应用个性化配置

这样,应用程序具有默认值,并且如果在PropertyResolver上找不到配置密钥,则不会抛出任何异常。此外,-DconfigurationLocation=file:///properties/files/(对于本例)可以定义一个个性化路径,其中可以加载my-application.properties文件并覆盖默认配置值而无需新部署。

对于存储在数据库中的配置,我会选择像你指出的commons-configuration这样的另一种方法。

答案 1 :(得分:0)

有很多选项可供选择,Spring Boot为您提供了一些很好的选项,可以为您提供所需的覆盖链(使用Profiles)。我写了一篇blog piece关于其中的一些内容。如果你想要分布式配置管理,你可能想要探索看起来非常有希望的Spring Cloud,但我还没有尝试过。