2014-07-21 31 views
4

在春季启动中处理应用程序配置的建议方法是什么?例如,我想要从文件(在覆盖链中)加载一些内容,例如数据库连接详细信息。我还想从数据库本身加载其他内容(如运行时可更改的应用程序设置),还有一些我希望允许用户以编程方式更改的内容。处理弹簧启动应用程序/外部配置的推荐方式?

我猜我在这里真的有两种不同的使用情况,我只是需要将它们分开处理,并使用类似http://commons.apache.org/proper/commons-configuration/的方式处理弹簧配置的一种方式和应用配置,但我想确保我不会丢失一些春天(或开机)的做事方式。

我通常会在论坛或邮件列表上询问这个问题,但我知道我们现在应该使用stackoverflow,所以请让我知道是否有更好的场地来处理这类问题。

+0

听起来像建议是主要在春天以外做我自己的事情......是对的吗? –

回答

0

我通常定义2级配置的:

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

通过这种方式,应用程序具有默认值,并且如果在上找不到配置键,则不会抛出任何异常。此外,-DconfigurationLocation=file:///properties/files/(针对这种情况)可以定义为一个个性化的路径,其中my-application.properties文件可以从新的部署中加载并覆盖默认配置值。

对于存储在数据库中的配置,我会像你指出的那样去寻找另一种方法,如commons-configuration

0

Spring Boot提供了一些可供选择的选项,它可以为您提供一些您正在寻找的覆盖链(使用配置文件)。我写了一个关于其中一些的blog piece。如果你想分布式配置管理,你可能想探索Spring Cloud这看起来很有前途,但我还没有尝试过。

相关问题