#4. Step

2025. 4. 17. 08:43·spring/batch

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
'spring/batch' 카테고리의 다른 글
  • #3. JobParameter
  • #2. JobInstance
  • #1. Job
tokkaiiii
tokkaiiii
java 웹개발 로그
  • tokkaiiii
    tokkaiiii's 개발일지
    tokkaiiii
  • 전체
    오늘
    어제
    • 분류 전체보기 (24)
      • java (1)
      • project tool (1)
        • jira (1)
      • spring (9)
        • security (3)
        • database access (2)
        • batch (4)
      • Kafka (2)
      • CICD (2)
      • Oracle (0)
      • MSA (1)
      • 운영 (7)
        • 게시판 (7)
      • 앱 (1)
        • 플러터 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • tokkaiiii
  • 공지사항

  • 인기 글

  • 태그

    플러터
    Flutter
    앱개발
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
tokkaiiii
#4. Step
상단으로

티스토리툴바