我正在使用spring-batch进行批处理。
我打算将spring-batch集成到spring-webmvc项目中。
但是,当我启动spring-webmvc服务器时,调用了spring-batch的ItemReader、ItemProcessor和ItemWriter Constructors。
我使用构造函数从数据库中获取批处理数据,所以我希望数据库的数据将保留在内存中。
我认为这可能会浪费记忆。
那个么,只有在执行批处理时,我才能调用这些构造函数呢?
这是我的批量配置。
@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();
}
}
在这种情况下,您可以延迟初始化批量的spring配置。
请参阅:
https://www.baeldung.com/spring-lazy-annotation.https://howtodoinjava.com/spring5/core/spring-bean-eager-vs-lazy-init/