我在我的上下文中定义了这些util常量。
<util:constant id="foo1" static-field="com.marvel.avengers.hulc.util.MyExampleConstants.FOO1"/>
<util:constant id="foo2" static-field="com.marvel.avengers.hulc.util.MyExampleConstants.FOO2"/>
<util:constant id="foo3" static-field="com.marvel.avengers.hulc.util.MyExampleConstants.FOO3"/>
我尝试在路由器表达式中使用foo1常量,但看起来#{foo1}是一个bean id而不是它的值。
<int:router input-channel="channelABC" expression=" !payload.avengersVO.powType.equals(#{foo1})
and !payload.avengersVO.powType.equals(#{foo2})
and !payload.avengersVO.powType.equals(#{foo3}) ? 'flowEndpoint' : 'civilWarsChan'"/>
另一方面,我可以在表达式中使用它,但想看看我是否可以使用我在路由器表达式中定义的常量:
<int:router input-channel="channelABC" expression=" !payload.avengersVO.powType.equals(T(com.marvel.avengers.hulc.util.MyExampleConstants).FOO1)
and !payload.avengersVO.powType.equals(T(com.marvel.avengers.hulc.util.MyExampleConstants).FOO2)
and !payload.avengersVO.powType.equals(T(com.marvel.avengers.hulc.util.MyExampleConstants).FOO3) ? 'flowEndpoint' : 'civilWarsChan'"/>
有人可以帮助我知道,如何在路由器表达式中从这个bean获取价值。 提前谢谢。
答案 0 :(得分:0)
这应该有效:
!payload.avengersVO.powType.equals(@foo2)
虽然,你的案子也很适合我:
<util:constant id="foo" static-field="org.springframework.integration.router.config.RouterParserTests.FOO"/>
<router input-channel="constantExpressionRouter" expression="'#{foo}'"/>
但是,请注意我将Bean Definition表达式包装到文字引号中,以避免尝试在运行时将其作为每个消息的属性进行评估。