Spring为什么无法自动连线我的云流处理器?

时间:2018-12-17 15:19:04

标签: spring spring-cloud-stream

我正在尝试从spring-cloud-stream实现一个基本处理器。我之前在其他项目上都做过,所以我以为我很熟悉。但是这次,Spring在通过@Autowire组件中的@Service创建我的处理器引用时遇到了问题。

我认为重要的是应用程序上的@EnableBinding(my.class),但我有。

错误是

No qualifying bean of type 'com.mycompany.config.BizSyncProcessor' available

我还尝试将@Component添加到BizSyncProcessor,但这没什么区别。

以下是片段:

public interface BizSyncProcessor {

    String BUSINESS_IDS_INPUT = "updatedBusinessIdsIn";
    String BUSINESS_IDS_OUTPUT = "updatedBusinessIdsOut";

    @Output(BizSyncProcessor.BUSINESS_IDS_OUTPUT)
    MessageChannel writeUpdatedBusinessIds();

    @Input(BizSyncProcessor.BUSINESS_IDS_INPUT)
    MessageChannel readUpdatedBusinessIds();

}

@Service
public class BusinessService {

    @Autowired
    private BizSyncProcessor bizSyncProcessor;

    // methods which reference bizSyncProcessor's input and outputs
}

@EnableBinding(BizSyncProcessor.class)
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

1 个答案:

答案 0 :(得分:1)

在应用程序类路径中没有某些Binder实现的情况下,@EnableBinding(BizSyncProcessor.class)毫无意义。正是该工具进行了实际的绑定,并为我们提供了用于依赖项注入的特定bean。

是的...在文档中似乎没有明确的句子表明必须存在Binder实现才能触发绑定接口代理并将其注册为bean:http://cloud.spring.io/spring-cloud-static/spring-cloud-stream/2.1.0.RC3/single/spring-cloud-stream.html#_destination_binders

随时提出GitHub问题,要求提出这样的文档改进!