我正在使用彈簧批處理進行批處理。
我打算將 Spring Batch 集成到 spring-webmvc 專案中。
但是,當我啟動 spring-webmvc 服務器時,spring batch 的 ItemReader、ItemProcessor、ItemWriter 建構式被呼叫。
我使用建構式從資料庫中獲取批處理資料,因此我希望資料庫的資料將保留在記憶體中。
我認為這可能會導致記憶體浪費。
那么只有在執行批處理時如何才能呼叫這些建構式呢?
這是我的批處理配置。
@Configuration
@EnableBatchProcessing
public class DbSyncConfiguration {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
private final int BATCH_SIZE = 1000;
@Bean
public Job dbSyncJob() {
return this.jobBuilderFactory.get("dbSyncJob")
.incrementer(new RunIdIncrementer())
.start(this.userParseStep())
.build();
}
@Bean
public Step userParseStep() {
return this.stepBuilderFactory.get("userParseStep")
.<ParseItem, ParseItem>chunk(BATCH_SIZE)
.reader(new UserItemParseReader())
.writer(new UserItemParseWriter())
.build();
}
}
uj5u.com熱心網友回復:
對于這種情況,您可以延遲初始化批處理的彈簧配置。
參考:
https ://www.baeldung.com/spring-lazy-annotation 。
https://howtodoinjava.com/spring5/core/spring-bean-eager-vs-lazy-init/
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/513222.html
