我使用Spring Batch從CSV文件中讀取一些數據並將其放入數據庫中。 我的批處理作業必須是2個的步驟化合物如何使Spring批處理步驟取決於上一步?
- 檢查文件(名稱,擴展,內容..)從CSV
- 讀取行,並將它們保存在DB(ItemReader,ItemProcessor中, ItemWriter ..)
如果Step 1
產生錯誤Step 2
不能執行(文件不符合,文件不存在...)
僅供參考,我使用Spring Batch的XML沒有configura重刑!只有註釋: 這裏是我的工作,配置類的樣子:
@Configuration
@EnableBatchProcessing
public class ProductionOutConfig {
@Autowired
private StepBuilderFactory steps;
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private ProductionOutTasklet productionOutTasklet;
@Autowired
private CheckFilesForProdTasklet checkFilesForProdTasklet;
@Bean
public Job productionOutJob(@Qualifier("productionOut")Step productionOutStep,
@Qualifier("checkFilesForProd") Step checkFilesForProd){
return jobBuilderFactory.get("productionOutJob").start(checkFilesForProd).next(productionOutStep).build();
}
@Bean(name="productionOut")
public Step productionOutStep(){
return steps.get("productionOut").
tasklet(productionOutTasklet)
.build();}
@Bean(name = "checkFilesForProd")
public Step checkFilesForProd(){
return steps.get("checkFilesForProd")
.tasklet(checkFilesForProdTasklet)
.build();
}
}
我改變這樣的:'返回jobBuilderFactory.get( 「productionOutJob」) 。開始(checkFilesForProd) 。對(ExitStatus.FAILED。 。getExitCode())結束() 。從(productionOutStep) .END() .build();' 我認爲在邏輯上是正確的,但現在我找不到如何返回'ExitStatus.FAILED'之間切換和'ExitStatus.COMPLETED'在我的'checkFilesForProdTasklet' –
抱歉,我顛倒了你的任務在我的第一個swer。這個如何 ? 返回jobBuilderFactory.get( 「productionOutJob」) 。開始(checkFilesForProd) 。對(ExitStatus.FAILED.getExitCode())。端() 。從(checkFilesForProd) 。對(ALL_PATTERN) 。爲(productionOutStep ) .build(); 這是你期待的結果嗎? – mabad
1 - ALL_PATTERN未知,是否意味着結果是什麼? 2 - 我的第二個問題是如何根據業務邏輯在我的tasklet中返回ExitStatus.FAILED和ExitStatus.COMPLETED? –