将属性存储在数据库中,但在本地覆盖

时间:2016-03-07 18:05:37

标签: java spring apache-commons-config

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

Apache commons' DatabaseConfigurator看起来不错,但是jndi名称被定义为文件中的属性并不好玩。我没有做任何要求它查看属性文件的第一个工作。

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

我怎样才能得到我在这之后的样子?主要是数据库中的属性,但文件中的属性会覆盖它们。并且数据源的jndi名称不应该在spring config中进行硬编码。

1 个答案:

答案 0 :(得分:0)

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

这就是我们在webapp中使用它的方法。