Spring 集成 - 如何使用 SpEL 在注释库上过滤消息?
Spring Integration - How to use SpEL to filter message on an annotation base?
我在 Spring 集成参考页面阅读了基于 xml 的配置:
<filter expression="#jsonPath(payload,'$..book[2].isbn') matches '\d-\d{3}-\d{5}-\d'"/>
这个基于注解的等价性是什么?这样我就可以使用 SpEL 作为过滤消息的逻辑。
谢谢。
您可以使用 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 ...");
}
我在 Spring 集成参考页面阅读了基于 xml 的配置:
<filter expression="#jsonPath(payload,'$..book[2].isbn') matches '\d-\d{3}-\d{5}-\d'"/>
这个基于注解的等价性是什么?这样我就可以使用 SpEL 作为过滤消息的逻辑。
谢谢。
您可以使用 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 ...");
}