1. 정의
일정한 간격으로 특정 서비스를 자동 실행하는 기능
2. 목적
- 백그라운드 자동 실행
- 반복 작업 자동화 구현
- 정기적인 점검 / 알림 / 배치 작업 등에 활용
3. 사용법
(1) 설정
AppStart 클래스 위에 @EnableScheduling 어노테이션 작성
(2) 실행 메소드
실행할 서비스 메소드 위에 @Scheduled 어노테이션 작성
(3) 패턴 종류
-
@Scheduled(fixedRate = 밀리초)
- 이전 작업 시작 시간 기준으로 일정 주기마다 실행
- (예: 5000 → 5초마다 실행)
-
@Scheduled(fixedDelay = 밀리초)
- 이전 작업 종료 시간 기준으로 일정 시간 후 실행
- (예: 5000 → 이전 작업 끝난 후 5초 뒤 실행)
-
@Scheduled(cron = "...")
- 날짜/시간 기준 정교한 실행 패턴 설정
- (서버 PC의 시스템 시간 기준 작동)
→ 권장 방식
4. Cron 표현식
(1) 형식
@Scheduled(cron = "* * * * * *")
(2) 자리별 의미
- 초 (0~59)
- 분 (0~59)
- 시 (0~23)
- 일 (1~31)
- 월 (1~12)
- 요일 (0~6 → 0:일요일, 1:월요일 … 6:토요일)
5. 예시
주말(일/토) 오전 10시
@Scheduled(cron = "0 0 10 * * 0,6")
매월 1일 오전 8시
@Scheduled(cron = "0 0 8 1 * *")
6. 주의할 점
-
백그라운드 기반 처리 → HTTP Response 응답 불가능
- (REST Controller 없이 실행되므로 응답 X)
-
해결방안
- HTTP 통신(요청-응답 기반) 대신 소켓 통신(연결 유지) 방식으로 응답 처리 가능