Java 使用spring集成命令总线启动/停止通过注释定义的抽象端点

Java 使用spring集成命令总线启动/停止通过注释定义的抽象端点,java,spring,spring-integration,spring-annotations,Java,Spring,Spring Integration,Spring Annotations,我使用注释来定义inboundChannelAdapter。 MyConfig.java @Bean @InboundChannelAdapter(value = "inputChannel", poller = @Poller(fixedRate = "5000"), autoStartup = "true") public MessageSource<File> input() { final FileRea

我使用注释来定义inboundChannelAdapter。 MyConfig.java

      @Bean
      @InboundChannelAdapter(value = "inputChannel", poller = @Poller(fixedRate = "5000"),
          autoStartup = "true")
      public MessageSource<File> input() {
        final FileReadingMessageSource result = new FileReadingMessageSource();
        result.setDirectory(new File("src/main/java/test"));
        return result;
      }

有没有一种方法可以停止适配器而不必为此定义特定的@Bean

您的解决方案如下:

"@'"+endpoint.getComponentName()+"'.stop()"
要使其最终看起来像:

@'myConfig.input.inboundChannelAdapter'.stop()
否则,我们就有这个SpEL:

@myConfig.input.inboundChannelAdapter.stop()

因此,它评估
myConfig
bean并尝试访问其
input
属性。

您的Springbean名为“input”,但SPEL正在查找属性或字段“input”。尝试将您的FileReadingMessagSource作为生命周期(而不是MessageSource)公开,以提供启动和停止方法
@'myConfig.input.inboundChannelAdapter'.stop()
@myConfig.input.inboundChannelAdapter.stop()