**我正在开发 Spring Batch,它将从文件夹中读取所有 CSV 文件,并且需要根据文件 bame 执行不同的过程。以下代码适用于一种文件(名称)类型。但问题是我需要根据“文件名”决定步骤执行。任何人,请帮助这个逻辑?
我的文件名格式:
EMP.CRE.3434234.3.6.csv
EMP.UPT.3434234.3.7.csv
STD.CRE.3434234.3.8.csv
STD.UPT.3434234.3.9.csv
基于 EMP 或 STD,我需要执行不同的处理逻辑。如果是 CRE,则创建逻辑(步骤),UPT 表示更新数据。
以下是我当前的代码结构:
@Bean
public Job employeeJob() throws Exception{
return jobs.get("employeeJob")
.start(masterStep())
.build();
}
@Bean
public step masterStep() throws Exception{
return steps.get("masterStep").partitioner(slavestep()
.partitioner("partition",partitioner())
.taskExecutor(taskExecutor()).build();
}
@Bean
public step slaveStep() throws Exception{
return steps.get("slaveStep").<EmployeeData, EmployeeData>chunk(10)
.reader(reader(null))
.processor(processor(null,null)
.writer(writer()).build();
}
@Bean
@JobScope
public Partitioner partitioner() throws Exception{
MultiResourcePartitioner partitioner = new MultiResourcePartitioner();
PathMatchingResourcePatternResolver resolver= new PathMatchingResourcePatternResolver();
partitioner.SetResources(resolver.getResources("file:"+Resourcepath+ filetype));
partitioner.partition(20);
return partitioner;
}
@Bean
@StepScope
public FlatFileItemReader<EmployeeData> reader(@value("#stepExecutionContext['fileName] String file){
return new FlatFileItemReaderBuilder<EmployeeData>()
...
...
.build();
}