我在Spring中的第一步实际上从服务器下载了一个CSV,并为它分配了一个动态名称,并将其存储在ExecutionContext中。
现在的问题是,在创建bean时,如何将输入文件的名称传递给FlatFileItemReader。
举个例子:
@Bean
public FlatFileItemReader<Customer> customerItemReader() {
FlatFileItemReader<Customer> reader = new FlatFileItemReader<>();
reader.setLinesToSkip(1);
reader.setResource(new ClassPathResource("/data/customer.csv"));
DefaultLineMapper<Customer> customerLineMapper = new DefaultLineMapper<>();
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames(new String[] {"id", "firstName", "lastName", "birthdate"});
customerLineMapper.setLineTokenizer(tokenizer);
customerLineMapper.setFieldSetMapper(new CustomerFieldSetMapper());
customerLineMapper.afterPropertiesSet();
reader.setLineMapper(customerLineMapper);
return reader;
}注意,reader.setResource(new ClassPathResource("/data/customer.csv"))是在创建bean时设置的.。
如何将信息从ExecutionContext FlatFileItemReader 传递到FlatFileItemReader作为输入源?
我需要查找Spring批处理表吗?
发布于 2020-08-11 04:49:51
让您的bean @StepScope或@JobScope并使用@Value来获取值。
@Bean
@StepScope
public FlatFileItemReader<Customer> customerItemReader(@Value("#{stepExecutionContext['your.name']} String file) {
// Bean creation logic here.
}现在,如果您花时间阅读文献资料,您就会亲自阅读它。
https://stackoverflow.com/questions/63348463
复制相似问题