我需要将图像上传到 FTP 服务器。因此,我创建了与 SessionFactory、MessageHandler 和 MessageGateway 的集成配置,用于将文件上传到 FTP 服务器:@Configuration@IntegrationComponentScanpublic class FtpConfiguration { @Bean public SessionFactory<FTPFile> ftpSessionFactory() { DefaultFtpSessionFactory defaultFtpSessionFactory = new DefaultFtpSessionFactory(); //setup return new CachingSessionFactory<>(defaultFtpSessionFactory); } @Bean @ServiceActivator(inputChannel = "toFtpChannel") public MessageHandler handler() { FtpMessageHandler handler = new FtpMessageHandler(ftpSessionFactory()); handler.setAutoCreateDirectory(true); handler.setRemoteDirectoryExpression(new LiteralExpression("")); handler.setFileNameGenerator(message -> (String) message.getHeaders().get("filename")); return handler; } //to show you that I've tried both /*@Bean public IntegrationFlow ftpOutboundFlow() { return IntegrationFlows.from("toFtpChannel") .handle(Ftp.outboundAdapter(ftpSessionFactory(), FileExistsMode.REPLACE) .useTemporaryFileName(false) .fileNameExpression("headers['" + FileHeaders.FILENAME + "']") .remoteDirectory("") ).get(); }*/ @MessagingGateway public interface UploadGateway { @Gateway(requestChannel = "toFtpChannel") void upload(@Payload byte[] file, @Header("filename") String filename, @Header("path") String path); }}成功构建应用程序。然后我试图上传一些文件:@AutowiredUploadGateway uploadGateway;@Overridepublic void uploadImage(byte[] scanBytes, String filename, String path) { try { uploadGateway.upload(scanBytes, filename, path); } catch (Exception e) { log.error("WRONG", e); }}然后它说:“没有名为'toFtpChannel'的bean可用” 我几乎尝试了每个教程,我做错了什么?
2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
您的应用程序看起来不像真的是 Spring Boot:我们没有看到@SpringBootApplication
注释。正是这个将启动正确的自动配置,包括用于 Spring Integration 的自动配置。
如果您仍然不关心那里的 Spring Boot,那么您将缺少一个标准@EnableIntegration
注释:https : //docs.spring.io/spring-integration/docs/current/reference/html/overview.html#configuration-enable-一体化
FFIVE
TA贡献1797条经验 获得超6个赞
在您可以在注释中引用它之前,请求通道应该实际存在。声明频道,该问题应该消失
@Bean
public MessageChannel toFtpChannel() {
return new DirectChannel();
}
此示例创建,DirectChannel但您可以根据您的语义选择任何实现。
希望能帮助到你!
添加回答
举报
0/150
提交
取消