我是Spring Integration的初学者。我写的这段代码是在春季启动时发出的,它引发了异常“名为'messageSource'的Bean应该是'org.springframework.context.MessageSource'类型的,但实际上是'org.springframework.integration.file.FileReadingMessageSource类型的'“
代码:
@Configuration
/*@EnableIntegration annotation designates this class as a Spring Integration configuration.*/
@EnableIntegration
public class SIConfig {
@Bean
public MessageChannel channel() {
return new DirectChannel();
}
//bydefault name of method
@Bean
public MessageSource messageSource() {
FileReadingMessageSource ms= new FileReadingMessageSource();
ms.setDirectory(new File("C:\\Users\\payal\\Pictures"));
ms.setFilter(new SimplePatternFileListFilter("*.mp4"));
return ms;
}
@Bean
public MessageHandler handler() {
FileWritingMessageHandler handler= new FileWritingMessageHandler(new File("C:\\Users\\payal\\Documents\\batch7"));
handler.setFileExistsMode(FileExistsMode.IGNORE);
handler.setExpectReply(false);
return handler;
}
@Bean
public IntegrationFlow flow() {
return IntegrationFlows.from(messageSource(), configurer -> configurer.poller(Pollers.fixedDelay(10000)))
.channel(channel())
.handle(handler()).get();
}
}
由于使用引导程序,因此会自动管理版本
在GitHub上也上传了代码:
https://github.com/LearningNewTechnology/SpringIntegrationOne
任何帮助将不胜感激。
答案 0 :(得分:1)
将Bean的名称更改为例如
@Bean
public MessageSource myMessageSource() {
Spring框架(上下文)具有另一种类型MessageSource
,Spring Boot自动配置会创建一个名称为messageSource
的类型的bean,以便您的bean与之冲突。