배치 프로그래밍 (스케쥴링)
: 주기적으로 실행되는 프로그램을 구현하는 것.
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!! 뜨게 해봄.

'학원 > 수업 기록' 카테고리의 다른 글
| [Spring] Http 상태 코드, 에러 메시지(예외) (0) | 2022.08.31 |
|---|---|
| Restful, Rest API (2) | 2022.08.31 |
| TBOARD 수정, CATE 생성(카테고리) 실습 (0) | 2022.08.25 |
| AOP 관점 지향 프로그래밍 (0) | 2022.08.25 |
| [Spring] 댓글 게시판 (OB, 전체 코드) (0) | 2022.08.23 |