Spring Batch: org.springframework.batch.item.ReaderNotOpenException: Reader must be open before it can be read

前端 未结 7 1176
独厮守ぢ
独厮守ぢ 2020-12-15 05:24

I read SO related questions but the solutions don\'t work for me.

I get the org.springframework.batch.item.ReaderNotOpenException: Reader must be open before i

7条回答
  •  天命终不由人
    2020-12-15 05:42

    Since you put the reader in StepScope, the bean return type should be the implementing type FlatFileItemReader:

    @Bean
    @StepScope
    public FlatFileItemReader reader(@Value("#{jobParameters[inputZipfile]}") String inputZipfile) {
                ...
                return reader;
    }
    

    If you specify the interface, the Spring proxy only has access to the methods and annotations specified on the interface ItemReader and is missing important annotations. There is also a warning (with a typo) in the logs:

    2015-05-07 10:40:22,733 WARN  [main] org.springframework.batch.item.ItemReader is an interface.  The implementing class will not be queried for annotation based listener configurations.  If using @StepScope on a @Bean method, be sure to return the implementing class so listner annotations can be used.
    2015-05-07 10:40:22,748 WARN  [main] org.springframework.batch.item.ItemReader is an interface.  The implementing class will not be queried for annotation based listener configurations.  If using @StepScope on a @Bean method, be sure to return the implementing class so listner annotations can be used. 
    

    Currently the Spring Boot Batch example is also returning the ItemReader, so I guess other people will struggle with the same issues.

提交回复
热议问题