Spring Batch 自定义 ItemReader 无法打开

And*_*ipe 0 java spring spring-batch

我有一个 Spring Batch 项目,其中有一个从 Web 服务异步检索数据的JsonResouurceAsyncPagingItemReader自定义项目。ItemReader

此自定义ItemReader使用 aExecutorService来提交对 Web 服务的调用。但是我在初始化它时遇到了麻烦。

我尝试通过doOpen提供的方法初始化它AbstractItemCountingItemStreamItemReader,但似乎doOpen没有被调用。

ItemReaderSpring 通过以下方式注入:

@Bean
@JobScope
public ItemReader<Map<String, Object>> reader(@Value("#{jobParameters['lastRun']}") Date lastRun,
        @Value("#{jobParameters['codInt']}") Long codInt) {

    Map<String, Object> parameterValues = new HashMap<String, Object>();
    if (lastRun != null) {
        parameterValues.put("lastRun", DateFormatUtils.format(lastRun, dateFormat));
    }
    if (codInt != null) {
        parameterValues.put("codInt", codInt);
    }

    JsonResourceAsyncPagingItemReader<Map<String, Object>> reader = new JsonResourceAsyncPagingItemReader<>();
    reader.setHttpUrl(server + pathTemplate);
    reader.setRestTemplate(restTemplate);
    reader.setParameterValues(parameterValues);
    reader.setPageSize(pageSize);

    return reader;
}
Run Code Online (Sandbox Code Playgroud)

并进一步用于Step这样的情况:

@Bean
public Step importProductStep() {
    return stepBuilderFactory.get("importProductJobStep")
            .<Map<String, Object>, Product>chunk(1000)
            .reader(reader(null, null))
            .processor(processor())
            .writer(writer())
            .build();
}
Run Code Online (Sandbox Code Playgroud)

知道可能出什么问题吗?

Luc*_*cci 5

如果您返回一个 ItemStream 或 ItemStreamWriter,那就应该没问题。
看这张票