ApacheCamel——Spring DSL中的引用类型常量

ApacheCamel——Spring DSL中的引用类型常量,spring,apache-camel,hazelcast,Spring,Apache Camel,Hazelcast,我正在尝试使用SpringDSL为Hazelcast主题定义一个发布操作 <from uri="direct:inbound" /> <onCompletion> <log message="onCompletion:- ${body}" /> <setHeader headerName="${type:org.apache.camel.component.hazelcast.H

我正在尝试使用SpringDSL为Hazelcast主题定义一个发布操作

<from uri="direct:inbound" />      
        <onCompletion>
            <log message="onCompletion:- ${body}" />
            <setHeader headerName="${type:org.apache.camel.component.hazelcast.HazelcastConstants.OPERATION}">
                <simple>${type:org.apache.camel.component.hazelcast.HazelcastConstants.PUBLISH_OPERATION}</simple>
            </setHeader>
            <to uri="hazelcast:topic:foo" />
        </onCompletion>                                                
        <log message="${body}" />
上面的路由是有效的,但我必须使用长而简单的脚本,如${type:org.apache.camel.component.hazelcast.hazelcastcants.OPERATION}来引用常量值。有没有更简单或简短的形式

我试图为HazelcastConstants类定义一个Springbean,并通过下面的简单脚本引用它,但它不能与MethodNotFoundException方法一起工作,该方法的名称为:在bean上找不到操作

<bean id="hazelcastConstants" class="org.apache.camel.component.hazelcast.HazelcastConstants" />
... ...
<simple>${bean:hazelcastConstants.OPERATION}</simple>

如果您定义了一个bean,其中包含一个返回相关常量的方法,那么您的bean解决方案将起作用,例如:

public class ContantRetriever() {
  public String getHazelCastOperation() {
   return org.apache.camel.component.hazelcast.HazelcastConstants.PUBLISH_OPERATION;
  }
}
您的Spring上下文:

<bean id="hazelcastConstants" class="yourpackage.ContantRetriever"/>
<simple>${bean:hazelcastConstants.getHazelCastOperation}</simple>
如果这对你没有好处的话,恐怕你会被访问常量的冗长形式所困扰