首页 文章

spring-integration-java-dsl channel creation

提问于
浏览 241
2

doc说:如果没有具有此名称的bean,将在上下文启动时创建新的DirectChannel bean .

@MessagingGateway
    public interface Responder {

        @Gateway(requestChannel = "request.input")
        String respond(String request);

    }

    @Bean
    public IntegrationFlow doResponse(){

        return IntegrationFlows
            .from("request.input")
            .transform("payload")
            .get();

    }

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {IntegrationConfiguration.class})
public class GatewayTests {

    @Autowired Responder responder;

    @Test
    public void test(){

        responder.respond("request");

    }

}

这导致:没有定义名为'request.input'的bean,如果我留下了一些触发创建 Channels 的东西?

spring-boot:1.1.9.RELEASE spring-integration-java-dsl:1.0.0.RELEASE spring-integration:4.0.4.RELEASE

1 回答

  • 3

    您应确保Spring Integration基础架构在 @Configuration 类上进行了 @EnableIntegration ,如果您使用Spring Boot,则为 @EnableAutoConfiguration .

    从另一方面来看,并非所有 auto-channel 功能都适用于Spring Integration 4.0.x.

    有了它,你总能用明确的 MessageChannel @Bean 克服这个问题 .

相关问题