我正在尝试从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);
}
}
答案 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问题,要求提出这样的文档改进!