[스프링 배치] StepScope

빈 스코프는 특정 빈 정의가 주어졌을 때 해당 클래스의 인스턴스화(객체 생성)를 어떻게 할 것인지를 지정하는 역할을 한다.

스프링 배치는 StepScope라는 빈 스코프를 제공한다. StepScope는 배치의 스텝과 빈을 연결짓는 역할을 한다.

StepScope 클래스는 BeanFactoryPostProcessor 인터페이스를 구현하여 StepScope를 스프링 빈에 자동으로 적용한다. StepScope를 사용하여 스프링에 의해 구성된 빈을 잡의 스텝 실행 시점에 인스턴스화함으로써 스텝 구성 및 스텝 매개변수를 지정할 수 있다.

스프링 배치는 StepScope와 SpEL을 이용하여 런타임 실행 컨텍스트에 값을 전달할 수 있으며 이를 통해 잡과 스텝에 관련된 엔티티에 접근하여 구성의 지연 바인딩(late binding)이 가능하다. 지연 바인딩을 사용하여 배치 실행 시점에 지정되는 배치 파라미터(JobParameter)를 배치 구성에 사용할 수 있다.

배치 실행에 필요한 여러 속성값을 배치 구성에 하드코딩할 필요 없이 배치 실행(런타임) 시 전달되는 JobParameters로부터 값을 꺼내 StepScope 빈의 속성으로 설정 가능하다. 스프링 배치는 배치를 구성할 때 개발 시 값을 알 수 없는 경우 배치 실행 동안 런타임에 이러한 값을 평가한다.

StepScope를 통해 접근 가능한 엔티티는 다음과 같다.

  • jobParameters
  • jobExecutionContext
  • stepExecutionContext

Comments