如何只有在执行批处理时才能执行构造函数



我正在使用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/

最新更新