代码之家  ›  专栏  ›  技术社区  ›  Zii

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

  •  1
  • Zii  · 技术社区  · 7 年前

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

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

    基于注释的等价性是什么?因此,我可以使用SpEL作为逻辑来过滤消息。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Gary Russell    7 年前

    您可以使用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 ...");
    }