【问题标题】:Spring Batch- Refactoring @StepScope beanSpring Batch-重构@StepScope bean
【发布时间】:2020-09-25 14:32:29
【问题描述】:

我遇到了一个问题。当我将 FlatFileItemReader 和 Step 移动到单独的配置文件中时,它停止工作。

实际问题是无法获取jobParameters。

@Configuration
public class FileReader {


    @Bean("personFileReader")
    @StepScope
    public FlatFileItemReader<Person> personFileReader(@Value("#(jobParameters['customerFile']") FileSystemResource fileName) {

        System.out.println(
                String.format("fileName = %s", fileName));

        return new FlatFileItemReaderBuilder<Person>().name("personItemReader").resource(fileName).fixedLength()
                .columns(getRange()).names(getNames()).targetType(Person.class).build();

    }

批量配置

@Configuration
@EnableBatchProcessing
public class BatchConfiguration extends DefaultBatchConfigurer {

@Autowired
@Qualifier("personFileReader")
private FlatFileItemReader<Person> personFileReader;


@Bean
public Step step() {
    return this.stepBuilderFactory.get("chunkStep").<Person, Person>chunk(10).reader(personFileReader)
            .writer(dummyWriter).build();

}

错误

Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): file [D:\Data\Study\spring-batch\batch-process\#(jobParameters['customerFile']]

我不知道我做错了什么。

【问题讨论】:

    标签: java spring spring-boot spring-batch


    【解决方案1】:

    @Value 注释似乎不正确

    @Value("#(jobParameters['customerFile']")
    

    应该是

    @Value("#{jobParameters['customerFile']}")
    

    【讨论】:

    • 谢谢。好收获 :)
    猜你喜欢
    • 1970-01-01
    • 2016-04-17
    • 2020-09-21
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多