【问题标题】:Setting global-property via java code通过 java 代码设置全局属性
【发布时间】:2014-02-04 02:53:27
【问题描述】:
我需要在语法上设置全局属性。从功能上讲,它应该完全按照下面的语句应该做的事情
<global-property name="host-name" value="localhost" doc:name="Global Property"/>
我相信我应该能够使用 ${host-name} 访问此属性。在这个特定的场景中,我不想从属性文件中加载属性。
【问题讨论】:
标签:
mule
mule-studio
anypoint-studio
【解决方案1】:
如果您只想解析 ${host-name} 之类的占位符,您可以使用方法 resolvePlaceholder 的自定义实现扩展 Spring PropertyPlaceholderConfigurer 类,并将其添加为 Spring bean,如下所示:
<spring:beans>
<spring:bean id="myConfigurer" class="my.test.MyConfigurer"/>
</spring:beans>
然后调用您的自定义 resolvePlaceholder 来解析任何未解析的属性。
通过从消息 (message.getMuleContext()) 获取上下文或通过实现 MuleContextAware bean 在 Mule 上下文注册表中设置实际设置的属性也相当简单,但在这些情况下,该属性在解析属性占位符的时间。
你可以这样设置属性:
context.getRegistry().registerObject("myKey", "myVal")
然后像这样访问它:
context.getRegistry().get("myKey")