Spring 集成 DSL 参考文档代码示例无法编译

Spring Integration DSL reference documentation code example doesn't compile

官方 Spring Integration DSL 参考文档在 https://docs.spring.io/spring-integration/reference/html/dsl.html#java-dsl

的第一部分提供了以下代码示例
@Configuration
@EnableIntegration
public class MyConfiguration {

    @Bean
    public AtomicInteger integerSource() {
        return new AtomicInteger();
    }

    @Bean
    public IntegrationFlow myFlow() {
        return IntegrationFlows.from(integerSource::getAndIncrement,
                c -> c.poller(Pollers.fixedRate(100)))
                .channel("inputChannel")
                .filter((Integer p) -> p > 0)
                .transform(Object::toString)
                .channel(MessageChannels.queue())
                .get();
    }
}

当我将此代码复制粘贴到我的 IDE (IntelliJ) 时,我在这一行收到以下错误

        return IntegrationFlows.from(integerSource::getAndIncrement,

错误信息:

Cannot resolve symbol 'integerSource'

我已经尝试了多种将 getAndIncrement 定义为 messageSource 的替代方法,但到目前为止它们都产生了某种错误。

有没有办法让这个例子编译并运行?

我们最近发现了同样的问题。请参阅最新快照中的修复文档:https://docs.spring.io/spring-integration/docs/5.5.2-SNAPSHOT/reference/html/dsl.html#java-dsl。固定代码是这样的:

  @Bean
public IntegrationFlow myFlow() {
    return IntegrationFlows.fromSupplier(integerSource()::getAndIncrement,
                                     c -> c.poller(Pollers.fixedRate(100)))
                .channel("inputChannel")
                .filter((Integer p) -> p > 0)
                .transform(Object::toString)
                .channel(MessageChannels.queue())
                .get();
}

下周发布。

您可以通过将 from() 替换为 fromSupplier()

来更改代码