Próbuję zrobić Spring Batch i nie mam z tym doświadczenia.Przekazywanie informacji między krokami na wiosnę?
Czy można przekazywać informacje z każdego etapu wsadowego lub czy muszą one być całkowicie niezależne?
Na przykład jeśli mam
<batch:step id="getSQLs" next="runSQLs">
<batch:tasklet transaction-manager="TransactionManager"
ref="runGetSQLs" />
</batch:step>
<batch:step id="runSQLs">
<batch:tasklet transaction-manager="TransactionManager"
ref="runRunSQLs" />
</batch:step>
And getSQLs wyzwala fasoli, która wykonuje klasy, która generuje listę typu String. Czy można odwołać się do tej listy dla komponentu bean uruchamianego przez komendy runSQL? („Wyzwalane” nie może być dobrym termin, ale myślę, że wiesz co mam na myśli)
UPDATE: Więc krok getSQLs wyzwala to Fasola:
<bean id="runGetSQLs" class="myTask"
scope="step">
<property name="filePath" value="C:\Users\username\Desktop\sample.txt" />
</bean>
który wyzwala klasę myTask która wykonuje tę metodę:
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
ExecutionContext stepContext = this.stepExecution.getExecutionContext();
stepContext.put("theListKey", sourceQueries);
return RepeatStatus.FINISHED;
}
Czy muszę jakoś przekazać krok Execution do metody execute?
Mój kod nie wydają się rozpoznać stepExecution. Zaimportowałem org.springframework.batch.core.StepExecution. Czego tu mi brakuje? – user2665166
Powinieneś raczej zaktualizować wpis blokami kodu i wspomnieć o tym, co zrobiłeś do tej pory. – tmarwen
Zaktualizowano. Zmieniłem również krok, aby dopasować Twój przykład. – user2665166