Spring集成 - 如何使用SpEL过滤注释基础上的消息?

时间:2017-11-06 19:20:03

标签: java filter annotations spring-integration spring-el

我在Spring Integration参考页面上阅读了基于xml的配置:

<filter expression="#jsonPath(payload,'$..book[2].isbn') matches '\d-\d{3}-\d{5}-\d'"/>

基于注释的等价是什么?这样我就可以使用SpEL作为过滤消息的逻辑。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Java DSL ...

@Bean
public IntegrationFlow filteringFlow() {
    return IntegrationFlows.from("someChannel")
            .filter("#jsonPath(...) matches ...")
            .channel("outChannel")
            .get();
}

或使用bean配置它......

@Bean
@ServiceActivator(inputChannel = "someChannel")
public MessageHandler filter() {
    MessageFilter filter = new MessageFilter(selector());
    filter.setOutputChannelName("outChannel");
    return filter;
}

@Bean
public MessageSelector selector() {
    return new ExpressionEvaluatingSelector("#jsonPath(...) matches ...");
}