학원/수업 기록

배치 프로그래밍 (Spring Scheduler)

2022. 8. 29. 10:49

배치 프로그래밍 (스케쥴링)

 : 주기적으로 실행되는 프로그램을 구현하는 것.

 

 

 

Thread : 반복 실행을 위한 Java의 클래스. 

Quartz : Java의 추가 라이브러리. 스케쥴링 관련. 구현하기 쉽고 지정되는 시간 표기 쉬움,

스레드가 효율적이지만 쓰기 힘들어서 요즘은 쿼츠를 사용한다.

 

Scheduler : Spring에서 제공되는 스케쥴링 라이브러리. 쿼츠와 유사함.

 

이외에도 여러가지 있음.

 

 

 

 

cron tab 방식

- Quartz, Spring Scheduler 공용 문법 

- 이전부터 있던 개념. 유닉스, 리눅스와 같은 윈도우 운영체제 시스템 설정 방식에서 사용.

- 연 월 일 시 분 초 등의 내용을 기준으로 일정을 정하는 방식.

 

 

servlet-context.xml

스프링에서 스케줄을 담당하는 건 task

정확히는 스프링 스케줄러가 동작.

스프링 자체에서 도는 것이기 때문에 클래스는 따로 필요하지 않다.

설정에 접근하기 위한 id만 할당했음.

pool-size : 내가 한 번에 몇 가지를 작업을 돌릴 건지 지정함. 최대 일정 개수. 기본값 1.

annotation-driven 내용 : 스케줄과 관련된 어노테이션을 기능화 해서 읽어들이겠다는 것. 관련된 게 들어오면 동작을 하고 50이라고 잡아놓은 것에 준다. 그것보다 많으면 pool-size 초과했다고 뜬다.

 

 

BatchComponent.java

일단 @Component가 달렸으니 객체가 생성됨.

@EnableScheduling : 스케줄링용 객체. 스케줄링 활성화함. 

-> 이 클래스 안에 있는 걸 읽어서 아까 거기 넣는다.

 

@Scheduled : 스케쥴링 주는 방법. 자동으로 아까 거기에 하나씩 꼽아 넣는다. 아래 메소드 실행.

괄호 안에 cron 정보 쓸 수도 있고 value를 쓸 수도 있음.

cron

- 기본 순서 : 초 분 시 일 월 요일
- * : 모든
- ? : 월, 요일에 사용. 신경안씀이라는 의미. 그러니 *을 쓰든 ?를 쓰든 별 차이 없음.
- 월: 1 ~ 12 (운영체제에서 도는 거라 0부터 아님.)
- 요일 : 1(일) ~ 7(토) 이며 ,(컴마)복수지정 가능. 예)월수금 : 2,4,6
- 숫자1/숫자2 : 숫자1에서 시작하여 매 숫자2마다 실행. 몇 분 간격으로 분마다 돌게 할 수 있음.

       예) 분에 0/5이면 0분부터 5분마다 실행.
- 일 : L은 달의 마지막날. W는 지정일자가 휴일(토, 일)이면 인접한 평일에 수행.
       예) 25W인경우 25일이 일요일이면 26일 월요일 실행.
- LW : 마지막 평일
- 요일에서 숫자1#숫자2 : 숫자2번째 주의 숫자1번 요일에 실행.
       예) 2#4 - 4번째주 월요일에 실행.

 

@Scheduled(cron = "0 0 0 * * *") -> 매일 0시 0분 0초에 실행

 

 

cron 시간 수정해서 콘솔창에 batch!! 뜨게 해봄.