【问题标题】:Changing Spring PropertyPlaceholderConfigurer to read from another source更改 Spring PropertyPlaceholderConfigurer 以从另一个源读取
【发布时间】:2012-05-30 08:22:51
【问题描述】:

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

一点背景:

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

为避免进行太多更改,我想更改 PropertyPlaceholderConfigurer 查找属性的方式 - 而不是实现一种全新的方式来管理属性。所以在启动时——Spring 会从一个 url 读取所有属性,并以与实际文件相同的方式将这些属性输入我的 spring 配置 xml。

奖金!

如果有人有任何想法如何做到这一点,其中属性从服务器重新加载只有在它们发生变化时,将获得奖励积分(我不知道我是否有能力分配奖励积分,但我会尝试!)。这将是一个“很高兴,如果不涉及太多努力的话”的解决方案。

【问题讨论】:

    标签: java spring properties


    【解决方案1】:

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

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

    【讨论】:

    • 这可能行得通 - 但是会从 url 获取并期望一个属性文件作为回报吗?我们可以这样做,但我希望自己处理从服务器收集属性。
    • 它将使用给定的位置打开一个InputStream,因此无论 URL 指向远程服务器上的属性文件还是动态生成属性的动态 Web 操作都无关紧要.您可以有一个远程属性操作,允许调用 example.org/getProps.do?user=pete 来呈现特定属性。
    • 谢谢 Axel,这很适合我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多