3

在我的应用程序中,我想用我的 application.properties 中的someData填充端点 url,并在使用 myEndpoint 之前彻底填充header.nameheader.myId

my_bean.xml:

<camel:camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" >
        <propertyPlaceholder id="properties" location="ref:myProps"/>

        <endpoint id="myEndpoint" uri="...myUrl.../${header.name}/{{someData}}/${header.myId}"/>

        <route id="myRoute" trace="true">
            ...
        </route>

</camel:camelContext>

它工作得很好,我创建了测试,一切都很棒我将 my_bean.xml 添加到 web.xml 以便使用我在另一个类中使用此端点的类。将其添加到 web.xml 后,出现错误:

信息:初始化 Spring 根 WebApplicationContext lis 07, 2013 3:57:44 PM org.apache.catalina.core.StandardContext listenerStart 严重:向类 org.springframework.web.context.ContextLoaderListener org.springframework 的侦听器实例发送上下文初始化事件的异常.beans.factory.BeanDefinitionStoreException:无效的 bean 定义,名称为“myEndpoint”,定义为 null:无法解析字符串值中的占位符“header.name”:“http4:...myUrl.../${header.name}/ {{someData}}/${header.myId}"

我的临时解决方案:我将header.nameheader.myId添加到 application.properties (其中someData)并且它再次工作,但我知道它不应该这样做。知道如何在不将这些值写入属性的情况下修复它吗?

4

1 回答 1

0

这是 Spring 框架中的一个限制。我们在 Apache Camel 网站上有一个常见问题解答,其中解释了这一点以及您可以做什么:http ://camel.apache.org/how-do-i-use-spring-property-placeholder-with-camel-xml.html

于 2013-11-12T16:40:08.500 回答