2

我需要以语法方式设置全局属性。从功能上讲,它应该完全按照以下语句应该做的事情

<global-property name="host-name" value="localhost" doc:name="Global Property"/>

我相信我应该能够使用 ${host-name} 访问此属性。在这个特定的场景中,我不想从属性文件中加载属性。

4

1 回答 1

2

如果您只想解析 ${host-name} 之类的占位符,您可以使用方法 resolvePlaceholder 的自定义实现扩展 Spring PropertyPlaceholderConfigurer 类,并将其添加为 Spring bean,如下所示:

<spring:beans>
  <spring:bean id="myConfigurer" class="my.test.MyConfigurer"/>
</spring:beans>

然后调用您的自定义 resolvePlaceholder 来解析任何未解析的属性。

通过从消息 () 获取上下文或通过实现 MuleContextAware bean 在 Mule 上下文注册表中设置实际设置的属性也相当简单message.getMuleContext(),但在这些情况下,当属性占位符出现时,该属性将不可用解决。

您可以像这样设置属性:

context.getRegistry().registerObject("myKey", "myVal")

然后像这样访问它:

context.getRegistry().get("myKey")
于 2014-02-04T09:11:38.723 回答