属性替换为自定义PropertyPlaceholderConfigurer

时间:2012-02-06 16:19:39

标签: java spring

对于我正在进行的项目,我们正在编写一个Spring ProperytPlaceholderConfigurer的自定义扩展,它可以执行一些特殊的自定义逻辑。此逻辑的一部分是它转到远程Web服务以请求要使用的属性。我正在尝试将其配置为使用系统属性来指定Web服务的详细信息以从中获取正确的属性,并且我无法正确替换系统属性。

我的春季定义如下:

<bean id="properties" class="my.custom.project.package.EnvironmentServicePropertyPlaceholderConfigurer">
    <property name="environmentServiceLocationBase" value="${environmentServiceLocation}" />
    <property name="environmentName" value="${environmentName}" />
    <property name="environmentServiceHost" value="${environmentServiceHost}" />
</bean>

然后,这些属性的值在内部用于配置器,以生成提供属性的服务的URL。但是,它们不会被实际的系统属性值替换,而是我的URL包含上面的字符串,而$ {}仍然存在。

我发现如果我创建类型为Resource而不是String的bean属性,那么它们会被正确替换,但这对我来说没什么用处......

到目前为止我尝试过的事情:

  • 添加另一个带有前缀的实际PropertyPlaceholderConfigurer,并使用前缀属性。
  • 使用“systemPropertiesModeName”
  • 的各种不同配置
  • 使用system属性作为constructor-arg定义String类型的bean,然后使用对该bean的引用作为属性

所有这些都需要在Spring 2.5.6中运行,因为我们还没有升级到Spring 3(很快,但还没有)

对我遗失的事情有任何建议吗?我确信这应该是彻头彻尾的琐碎,但我不能让它发挥作用......

0 个答案:

没有答案