Spring批量集成:java.lang.ClassCastException:org.springframework.integration.file.FileReadingMessageSourc

Posted

技术标签:

【中文标题】Spring批量集成:java.lang.ClassCastException:org.springframework.integration.file.FileReadingMessageSource 无法转换为java.io.File【英文标题】:Spring batch integration : java.lang.ClassCastException: org.springframework.integration.file.FileReadingMessageSource cannot be cast to java.io.File 【发布时间】:2019-04-10 20:13:11 【问题描述】:
@InboundChannelAdapter(value = "fileInputChannel", poller = @Poller(fixedDelay = "15000"))
public MessageSource<File> fileReadingMessageSource() 

    FileReadingMessageSource source = new FileReadingMessageSource();
    source.setDirectory(new File(ftpUploadDir));
    source.setFilter(new SimplePatternFileListFilter("*.csv"));
    source.setScanEachPoll(true);

    source.setUseWatchService(true);


    return source;


@Transformer(inputChannel = "fileInputChannel", outputChannel = "jobChannel")
public JobLaunchRequest transform(Message<File>  file) 

    log.info( file.getPayload().toString());


    JobParameters jobParameters = new JobParametersBuilder()
            .addString("fileName", file.getPayload().getAbsolutePath())
            .addDate("dateTime", new Date())
            .toJobParameters();


    JobLaunchRequest request = new JobLaunchRequest(job, jobParameters);

    return request;

【问题讨论】:

欢迎来到 Stack Overflow!为了帮助其他人理解和回答您的问题,请您:1. 清楚地说明您的目标和您面临的问题 2. 显示错误发生的确切时间并提供堆栈跟踪 3. 适当地格式化代码 请提供更多背景信息以便为您提供帮助。 请看我的回答。 【参考方案1】:

您还需要在fileReadingMessageSource() 方法中添加@Bean 注释以及@InboundChannelAdapter

关键是,如果没有 @Bean,框架将根据 fileReadingMessageSource() 方法调用的结果创建带有 MethodInvokingMessageSourceSourcePollingChannelAdapter

有关详细信息,请参阅 Spring 集成参考手册:https://docs.spring.io/spring-integration/docs/5.0.9.RELEASE/reference/html/configuration.html#annotations

【讨论】:

谢谢阿特姆。我现在有点卡住了。我在调试模式下在应用程序中运行。我可以看到控制进入 fileReadingMessageSource Bean ,控制没有进入 FileToJobTransformer 的转换方法。

以上是关于Spring批量集成:java.lang.ClassCastException:org.springframework.integration.file.FileReadingMessageSourc的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 集成 Druid 批量插入数据和效率监控配置

Spring Boot 集成 Druid 批量插入数据和效率监控配置

Spring Boot 集成 Druid 批量插入数据和效率监控配置

Spring boot集成Redis—进行增加,更新,查询,批量删除等操作

spring boot + mybatis批量插入大量数据(超过10000条)

spring.boot mybaits集成