"Schritt" oder "Job" Anwendungsbereich für Spring-Batch-Beans?

8

Ich verwende Spring-Batch v3.0.0 für Batch-Importe. Es gibt ein StepScope und ein JobScope . Wie kann ich wissen, welche von ihnen angemessen ist?

Wenn ich zum Beispiel ein benutzerdefiniertes ItemReader oder ItemWriter definiere, das ein bestimmtes EntityManager verwenden soll, könnte es so aussehen:

%Vor%

Aber welcher Bereich ist hier richtig? Und warum?

Die Ausführung mit step scope funktioniert, aber ich denke, dass die itemWriter möglicherweise von job scope sein sollten, damit sie nicht bei jedem Schritt neu erstellt werden.

Ich habe versucht, step auf job zu setzen, aber das wirft folgenden Fehler auf:   Exception in thread "main" java.lang.IllegalStateException: No Scope registered for scope 'job'

    
membersound 03.06.2014, 14:21
quelle

2 Antworten

4

Seit Spring-Batch v3.0.1 können Sie @JobScope

verwenden
  

Das Markieren von @Bean als @JobScope entspricht der Markierung als @Scope (Wert="Job", proxyMode = TARGET_CLASS)

    
Eiland 28.07.2014, 08:34
quelle
1

Verstanden: Der Bereich muss als Bean explizit in der @Configuration -Datei angegeben werden.

%Vor%     
membersound 03.06.2014 15:04
quelle