Spring 批量重构 @StepScope bean
Spring Batch- Refactoring @StepScope bean
我遇到了一个问题。当我将 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']]
我不知道我做错了什么。
@Value 注释似乎不正确
@Value("#(jobParameters['customerFile']")
应该是
@Value("#{jobParameters['customerFile']}")
我遇到了一个问题。当我将 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']]
我不知道我做错了什么。
@Value 注释似乎不正确
@Value("#(jobParameters['customerFile']")
应该是
@Value("#{jobParameters['customerFile']}")