[FIXED] Wie kann ich den Konstruktor nur ausführen, wenn ich einen Batch-Prozess ausführe?

Ausgabe

Ich mache Batch-Prozess mit Spring Batch.

Ich beabsichtige, Spring Batch in das Spring-Webmvc-Projekt zu integrieren.

Aber wenn ich den spring-webmvc-Server starte, werden die ItemReader-, ItemProcessor- und ItemWriter-Konstruktoren von Spring Batch aufgerufen.

Ich habe Konstruktoren verwendet, um Batch-Daten aus der Datenbank abzurufen, daher erwarte ich, dass die Daten der Datenbank im Speicher verbleiben.

Ich denke, es kann zu Speicherverschwendung führen.

Wie kann ich diese Konstruktoren also nur aufrufen, wenn ich einen Batch-Prozess ausführe?

Hier ist meine Batch-Konfiguration.

@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();
  }
}

Lösung

Für diesen Fall können Sie die Federkonfiguration für den Batch initialisieren.

Siehe:
https://www.baeldung.com/spring-lazy-annotation .
https://howtodoinjava.com/spring5/core/spring-bean-eager-vs-lazy-init/


Beantwortet von –
swapyonubuntu


Antwort geprüft von –
Gilberto Lyons (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] Schleifenkarte mit Entität

Ausgabe Haben Sie etwas für: for(int i = 0; i < ids.size(); i++){ List<NomenclatureTypeFirst> nmtf = nomenclatureTypeFirstService.getAllByRequest(ids.get(i)); map.put(ids.get(i),…