提问者:小点点

Spring-集成-java-dsl通道创建


文档说:如果没有此名称的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,我是否遗漏了触发频道创建的内容?

spring-boot: 1.1.9.RELEASE spring-集成-java-dsl:1.0.0.RELEASE spring-集成:4.0.4.RELEASE


共1个答案

匿名用户

您应该确保Spring Integration基础结构是在@Configuration类上的@EnableIntegruration,或者如果您使用Spring Boot,则使用@EnableAutoConfiguration

从另一方面来看,并非所有自动通道功能都适用于Spring Integration4.0. x。

有了这个,您总是可以通过显式的MessageChannel@Bean来克服这个问题。