我正在研究Spring Batch流程,但有关我的文档并未阐明流程。
我有一个API可以接收一个固定位置的平面文件。该文件具有页眉,正文和页脚特定的布局。
我想创建一个File类,该File类具有一个Header,一个Details列表和一个footer类。
从现在开始,我所知道的是我必须使用一个令牌来标识每个页眉,详细信息和页脚的位置,但是我发现的有关Spring批处理的所有内容都没有显示该如何做以及如何从API开始该过程请求。
您必须使用JobbuilderFactory来构建作业:
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Bean
public SomeReader<Some> reader() {
// some reader configuration
return reader;
}
@Bean
public SomeProcessor processor() {
return new SomeProcessor();
}
@Bean
public SomeWriter<Person> writer() {
// some config
return writer;
}
@Bean
public Job someJob() {
return jobBuilderFactory.get("someJob")
.flow(step1())
.end()
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<Some,Some> chunk(10)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}
}
在休息控制器中开始作业:
@RestController
@AllArgsConstructor
@Slf4j
public class BatchStartController {
JobLauncher jobLauncher;
Job job;
@GetMapping("/job")
public void startJob() {
//some parameters
Map<String,JobParameter> parameters = new HashMap<>();
JobExecution jobExecution = jobLauncher.run(job,new JobParameters(parameters));
} }
还有一个重要的细节-添加application.properties:
spring.batch.job.enabled=false
防止作业自动启动。