1. flow
Job 에서 step 을 실행하면 StepBuild.class 에서 TaskletStep 을 만드는 메소드를 탄다
public TaskletStepBuilder tasklet(Tasklet tasklet, PlatformTransactionManager transactionManager) {
return new TaskletStepBuilder(this).tasklet(tasklet, transactionManager);
}
그리고 TaskletStepBuilder 클래스의 메소드를 타고
public TaskletStepBuilder tasklet(Tasklet tasklet, PlatformTransactionManager transactionManager) {
this.tasklet = tasklet;
super.transactionManager(transactionManager);
return this;
}
build 를 하면
AbstractTaskletStepBuilder 클래스의 build 함수를 통해 빌드된다
public TaskletStep build() {
registerStepListenerAsChunkListener();
TaskletStep step = new TaskletStep(getName());
super.enhance(step);
step.setChunkListeners(chunkListeners.toArray(new ChunkListener[0]));
if (this.transactionManager != null) {
step.setTransactionManager(this.transactionManager);
}
if (transactionAttribute != null) {
step.setTransactionAttribute(transactionAttribute);
}
if (stepOperations == null) {
stepOperations = new RepeatTemplate();
if (taskExecutor != null) {
TaskExecutorRepeatTemplate repeatTemplate = new TaskExecutorRepeatTemplate();
repeatTemplate.setTaskExecutor(taskExecutor);
repeatTemplate.setThrottleLimit(throttleLimit);
stepOperations = repeatTemplate;
}
((RepeatTemplate) stepOperations).setExceptionHandler(exceptionHandler);
}
step.setStepOperations(stepOperations);
step.setTasklet(createTasklet());
step.setStreams(streams.toArray(new ItemStream[0]));
try {
step.afterPropertiesSet();
}
catch (Exception e) {
throw new StepBuilderException(e);
}
return step;
}
@Override
protected Tasklet createTasklet() {
return tasklet;
}
SimpleJobBuilder 에서 build 메서드 실행
public Job build() {
if (builder != null) {
return builder.end().build();
}
SimpleJob job = new SimpleJob(getName());
super.enhance(job);
job.setSteps(steps);
try {
job.afterPropertiesSet();
}
catch (Exception e) {
throw new JobBuilderException(e);
}
return job;
}'spring > batch' 카테고리의 다른 글
| #3. JobParameter (0) | 2025.04.16 |
|---|---|
| #2. JobInstance (0) | 2025.04.16 |
| #1. Job (0) | 2025.04.16 |