在我的应用程序中,我想从我的application.properties中使用 someData 填充端点URL并彻底填写 header.name 和 header.myId 在使用myEndpoint之前。
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 root WebApplicationContext lis 07,2013 3:57:44 PM org.apache.catalina.core.StandardContext listenerStart SEVERE:将上下文初始化事件发送给侦听器的异常 类的实例 org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException: 名称为'myEndpoint'的bean定义无效 null:无法解析占位符'header.name' 字符串值: “http4:... myUrl ... / $ {header.name} / {{someData}} / $ {header.myId}”
我的临时解决方案:我将 header.name 和 header.myId 添加到application.properties(其中 someData )并再次运行但我知道不应该这样做。 任何想法如何在不将这些值写入属性的情况下修复它?
答案 0 :(得分:0)
这是Spring Framework的一个限制。我们在Apache Camel网站上的常见问题解答中解释了这一点以及您可以做些什么:http://camel.apache.org/how-do-i-use-spring-property-placeholder-with-camel-xml.html