如何将属性与 Spring XML 中 Apache Camel 路由中的(布尔)文字进行比较?
Posted
技术标签:
【中文标题】如何将属性与 Spring XML 中 Apache Camel 路由中的(布尔)文字进行比较?【英文标题】:How can I compare a Property to a (boolean) literal in an Apache Camel route in Spring XML? 【发布时间】:2015-12-10 23:28:40 【问题描述】:我正在尝试获取基于条件语句执行操作的骆驼路线;如果该条件为真,那么它将执行该操作。但是,如果该条件为 false,则不会执行该操作。
条件语句基于从“.properties”文件中提取的属性值。我已经为 bean 中的属性定义了 placeholderPrefix
和 placeholderSuffix
,它们分别是 和
。如果有帮助,该定义如下所示:
<bean id="com.example.springPropertyConfigurer"
class="com.example.PropertiesSpringPlaceholderConfigurer">
<constructor-arg index="0"
type="com.example.PropertiesInterface"
ref="com.example.Properties" />
<property name="placeholderPrefix" value="" />
<property name="placeholderSuffix" value="" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
</bean>
我目前的sn-p代码如下:
<camel:choice>
<camel:when>
<camel:simple>com.example.PropertyKey == 'true'</camel:simple>
<camel:to uri="executingTargetAction" />
</camel:when>
<camel:otherwise>
<!-- Empty block so that nothing happens -->
</camel:otherwise>
</camel:choice>
到目前为止,这种方法并没有给我想要的结果。
我尝试同时使用<xpath>
和<spel>
而不是<simple>
来查看它们是否有效,但似乎这些表达式语言都希望条件的左侧包含Exchange
对象从骆驼路线。我不想将任何东西与 Exchange 对象进行比较——我只想将属性文件中的属性与我提供的给定文字(在本例中为布尔值“true”)进行比较。
我愿意使用除 <simple>
和上面列出的其他将执行此任务的其他 Camel 表达式语言。
【问题讨论】:
骆驼版本是2.8.1 【参考方案1】:你可以在choice 和when 中使用bean 方法。该方法的返回类型将是布尔值,因此如果返回 true,那么您的代码何时将被执行,否则不会执行。
<choice>
<when>
<method ref="ABC" method="pqr" />
-----your desired logic-----
</when>
</choice>
【讨论】:
以上是关于如何将属性与 Spring XML 中 Apache Camel 路由中的(布尔)文字进行比较?的主要内容,如果未能解决你的问题,请参考以下文章
Spring 3.2 - 如何将 XML 中配置的 FlatFileItemWriter 注入 java 类中的参数化属性
Springboot 日志管理配置logback-spring.xml
如何让是spring启动时加载一个类。这里类实现了读取xml配置数据到内存中(不是属性文件)