【问题标题】:Store properties in database, but override locally将属性存储在数据库中,但在本地覆盖
【发布时间】:2016-03-07 18:05:36
【问题描述】:

目前,我们将应用程序的环境属性存储在 WEB-INF 中的 .properties 文件中。我们想将它们移动到数据库表中。但是我们仍然希望指定 jndi 名称,并且当在本地测试环境中运行时,我们希望能够覆盖某些属性,仅为我们的工作区进行测试和开发。

Apache commons 的 DatabaseConfigurator 看起来不错,但将 jndi 名称定义为文件中的属性时效果不佳。我没有做任何事情来要求它首先查看属性文件。

我决定继承 apache commons 的 AbstractConfiguration 来尝试创建一个配置器,它可以按照我的意愿检查文件和数据库,但同样,它并没有真正起作用。 Spring 绝对首先需要该 jndi 名称,可能是因为必须将数据源作为参数传递到配置器中。

我怎样才能在这里得到我想要的东西?主要是数据库中的属性,但文件中的属性会覆盖它们。并且数据源的 jndi 名称不必在 spring 配置中硬编码。

【问题讨论】:

    标签: java spring apache-commons-config


    【解决方案1】:

    您为什么不编写一个 ApplicationContext 侦听器,该侦听器将从您的数据库中读取配置并将它们注入 JNDI 中?然后,您可以使用将放置在 src/local/webapp/META-INF/ 中的 context.xml 文件覆盖 JNDI 中的配置。

    这就是我们如何在我们的 web 应用程序中使用它。

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 2021-10-22
      • 2014-12-28
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 2017-06-06
      • 2023-01-27
      • 2015-01-19
      相关资源
      最近更新 更多