mule配置中的属性占位符是从一个文件解析而不是从另一个文件解析

时间:2012-06-17 20:40:23

标签: spring configuration mule

我遇到了一个奇怪的问题。 我有一个mule配置文件。没有什么是令人兴奋的,并且工作正常。至少它起作用了......

当我开始将配置参数放入多个属性文件时,问题就开始了。如果我在一个文件中定义一个属性,它将被解析,但不会从另一个文件中解析。

没有错误消息表明读取文件失败或任何事情......

我的场景告诉我,这与配置文件由org.mule.config.spring.SpringXmlConfigurationBuilder ...

读取的事实有关。

有没有人有过类似的问题?或者有谁知道到底发生了什么?

3 个答案:

答案 0 :(得分:1)

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:my-mule-app.properties</value>
                <value>classpath:my-mule-app-override.properties</value>
            </list>
        </property>
    </bean>

答案 1 :(得分:0)

我不确定您是如何配置上下文占位符的,但如果您使用多个属性,则应声明以逗号分隔的位置列表,如下所示:

<context:property-placeholder
         location="classpath:my-mule-app.properties,
                   classpath:my-mule-app-override.properties" />

如果您需要任何进一步的信息,可以找到它们 关于主题的the official documentation page

答案 2 :(得分:0)

谢谢你们。

所以这个神秘的问题已经解决了。在我的集成测试中,我需要一个启动的hornetq / mule服务器对。对于测试,我想从通常的spring XML配置中注入所有可能的对象。 所以我在spring XML配置文件中定义了我的MuleServer bean,并使用了将mule的配置文件作为String数组的构造函数。我没有意识到(或没有想过)MuleServer类创建自己的应用程序上下文...

所以在我的测试应用程序上下文中,我实例化了一个创建自己的应用程序上下文的对象......

由于Property占位符是某种特殊bean,必须在所有其他bean之前初始化,这会导致上述奇怪的行为。

解决方案是我在测试setUp方法中使用new关键字实例化MuleServer。

这对我有用。