有没有办法使用 java 注释在 spring 集成中编写过滤器?

Is there a way to write a filter in spring-integration using java annotation?

我正在尝试在 spring 集成中转换 xml 配置,我遇到了一个过滤器,如下所示:

<
  int:filter
  expression="someFilterExpression"
  input-channel="inputChannel"
  output-channel="outputChannel"
  discard-channel="discardChannel"
/>

有没有办法为此提出一个 Java 等效注释?我试过使用@Filter 注释,但它没有在其中包含表达式字段。

我不确定我是否完全理解你的问题。如果您使用注释,其全部原因是因为您有一些复杂的逻辑,不能不应该用SpEL表达, 所以它给了你写一些 java 代码的机会,让框架知道这是一个过滤器。 还有 DSL,我认为这个 post 涵盖得很好 -

感谢您为我指明了正确的方向。进一步详细说明我做了什么。我放入 spring 集成 dsl 依赖项

<dependency>
  <groupId>org.springframework.integration</groupId>
  <artifactId>spring-integration-java-dsl</artifactId>
  <version>1.2.3.RELEASE</version>
</dependency>

并使用 IntegrationFlows 构建过滤器。我是通过以下方式完成的:

@Bean
public IntegrationFlow filter() {
    return IntegrationFlows
        .from("someInputChannel")
        .filter(
            "someFilterExpression",
            e -> e.discardChannel("someDiscardChannel"))
        .channel("someOutputChannel")
        .get();
}

所以,上面的Java DSL与:

基本相同
<
  int:filter
  expression="someFilterExpression"
  input-channel="someInputChannel"
  output-channel="someOutputChannel"
  discard-channel="someDiscardChannel"
/>

再次感谢您的回答。 :)