Spring Batch ‐ @JobScope & @StepScope 어노테이션 - dnwls16071/Backend_Study_TIL GitHub Wiki

📚 @JobScope & @StepScope

  • Scope : 스프링 컨테이너에서 빈이 관리되는 범위
  • 스프링 배치 스코프 : @JobScope, @StepScope
    • Job과 Step의 빈 생성과 실행에 관여하는 스코프
    • 프록시 모드를 기본값으로 하는 스코프
    • 스프링 컨테이너가 처음 구동될 때는 실제 구현체가 아닌 프록시 객체가 빈으로 등록된다. 이 프록시 객체는 실제 객체의 생성을 지연시키는 역할을 한다. 실제 Job이나 Step이 실행될 때 비로소 프록시를 통해 실제 구체 클래스의 인스턴스가 생성되고 해당 메소드가 실행된다.
    • @Value 어노테이션을 사용해 값을 주입하고 빈의 실행 시점에 해당 값을 참조할 수 있으며 지연 로딩이 가능해진다.
    • 프록시 모드로 빈이 선언되고 애플리케이션 구동 시점에 빈의 프록시 객체가 생성되어 실행 시점에 실제 빈을 호출한다.
  • @JobScope는 Step 선언문에 정의한다.
  • @StepScope는 Tasklet이나 ItemReader, ItemProcessor, ItemWriter 선언문에 정의한다.

📚 @JobScope & @StepScope 아키텍처

스크린샷 2025-02-28 오후 10 05 36

  • @JobScope, @StepScope 어노테이션이 붙은 스프링 빈에 대해선 프록시 객체가 생성된다.
  • 해당 어노테이션은 AOP를 기반으로 작동되는 어노테이션이다.