본문 바로가기

Spring Batch

(3)
[Spring Batch] @JobScope, @StepScope @JobScope, @StepScope Scope 스프링 컨테이너에서 빈이 관리되는 범위를 의미한다. singleton, prototype, request, session, application 공통점 Job과 Step의 빈 생성과 실행에 관여하는 스코프이다. 프록시 모드가 기본 값 : @Scope(value="job", proxyMode=ScopedProxyMode.TARGET_CLASS) 해당 스코프가 선언되면 빈 생성 시점이 어플리케이션 구동 시점이 아니라 빈의 실행 시점에 이뤄진다. → 프록시 객체가 실제 빈을 호출해서 메소드 실행한다. 병렬처리 시 각 쓰레드마다 스코프 빈이 할당되기 때문에 안전하다. @JobScope Step 선언문에 정의한다. @Value: jobParameter, jobEx..
[Spring Batch] Quartz의 개념과 예시 Quartz란? 스프링 프레임워크와 통합되어 스프링 애플리케이션에서 스케줄링 작업을 수행할 수 있도록 지원하는 오픈소스 라이브러리이다. 스프링에서 Quartz를 사용하기 위해서는 의존성을 추가 하고, Quartz 스케줄러를 스프링 빈으로 등록하고, Job과 Trigger를 스프링 빈으로 등록하여 스케줄러에서 사용할 수 있도록 설정해야 한다. 이를 위해 스프링에서는 QuartzJobBean과 CronTriggerFactoryBean 등의 클래스를 제공한다. 의존성 추가 Maven org.springframework.boot spring-boot-starter-quartz Gradle implementation 'org.springframework.boot:spring-boot-starter-quartz' ..
[Spring Batch] Spring Batch 개념 왜 스프링 배치를 사용하는가? 배치 처리는 컴퓨터에서 사람과 상호 작용 없이 이어지는 프로그램의 실행 → 한번 요청으로 그 시스템 내에서 종료가 됨 사용자와의 상호 작용이 주력인 웹 애플리케이션과는 지향점이 다름 web : 실시간 처리 / QA 용이성 batch : 후속 처리 / QA 복잡성 언제 사용하는가? 일정 주기로 실행되어야 할 때 웹어플리케이션으로 실시간 처리가 어려운 대량의 데이터를 처리할 때 배치는 대량의 데이터를 처리하기 위해서 여러 가지 기능을 제공 → 개발자는 업무 로직의 구현에만 집중하고 공통적인 기반 기술은 프레임워크가 담당 pageSize, chunkSize 등이 프레임워크 단위에서 지원이 됨 하지만 Quartz는 지원해주지 않음 -> Spring Batch와 Quartz를 함께 ..