更改Spring PropertyPlaceholderConfigurer以从另一个源读取

时间:2012-05-30 08:22:52

标签: java spring properties

我想扩展/替换Spring PropertyPlaceholderConfigurer以从Web服务器读取而不是属性文件。

一些背景知识:

我在一个项目上工作,我们发现用户系统上的属性文件数量变得有点笨拙。我们想用'配置服务器'替换这些文件,它将存储基本的键/值对,并在用户启动应用程序时提供它们。

为了避免做太多更改,我想改变PropertyPlaceholderConfigurer找到属性的方式 - 而不是实现一种全新的方法来管理属性。所以在启动时--Spring会从url中读取所有属性,并以与实际文件相同的方式将它们提供给我的spring config xml。

加成!

如果有人有任何想法如何做到这一点,只有当他们改变从服务器重新加载属性时,才会获得奖励积分(我不知道我是否有能力分配奖励积分,但我会试试!)。如果没有太多努力的话,那将是一件好事。

1 个答案:

答案 0 :(得分:2)

Spring的PropertyPlaceholderConfigurer(PPC)已经使用Resource interface来指定从哪里读取属性的位置(通过继承自PropertiesLoaderSupport的setLocation(Resource) method

这个名为URLResource的接口的实现类可能会做你想要的。您可以简单地创建一个PPC并使用此类型的bean设置location属性,以从URL而不是文件加载属性。此类还支持file://类型的URL,因此您可以根据您使用的URL在加载的on-offline属性之间切换。