Spring Scheduling (스프링 스케줄링)

·2025년 9월 16일

SPRING

목록 보기
13/15

1. 정의

일정한 간격으로 특정 서비스를 자동 실행하는 기능

2. 목적

  1. 백그라운드 자동 실행
  2. 반복 작업 자동화 구현
  3. 정기적인 점검 / 알림 / 배치 작업 등에 활용

3. 사용법

(1) 설정

AppStart 클래스 위에 @EnableScheduling 어노테이션 작성

(2) 실행 메소드

실행할 서비스 메소드 위에 @Scheduled 어노테이션 작성

(3) 패턴 종류

  1. @Scheduled(fixedRate = 밀리초)

    • 이전 작업 시작 시간 기준으로 일정 주기마다 실행
    • (예: 5000 → 5초마다 실행)
  2. @Scheduled(fixedDelay = 밀리초)

    • 이전 작업 종료 시간 기준으로 일정 시간 후 실행
    • (예: 5000 → 이전 작업 끝난 후 5초 뒤 실행)
  3. @Scheduled(cron = "...")

    • 날짜/시간 기준 정교한 실행 패턴 설정
    • (서버 PC의 시스템 시간 기준 작동)
      → 권장 방식

4. Cron 표현식

(1) 형식

@Scheduled(cron = "* * * * * *")

(2) 자리별 의미

  1. 초 (0~59)
  2. 분 (0~59)
  3. 시 (0~23)
  4. 일 (1~31)
  5. 월 (1~12)
  6. 요일 (0~6 → 0:일요일, 1:월요일 … 6:토요일)

5. 예시

주말(일/토) 오전 10시

@Scheduled(cron = "0 0 10 * * 0,6")

매월 1일 오전 8시

@Scheduled(cron = "0 0 8 1 * *")

6. 주의할 점

  1. 백그라운드 기반 처리 → HTTP Response 응답 불가능

    • (REST Controller 없이 실행되므로 응답 X)
  2. 해결방안

    • HTTP 통신(요청-응답 기반) 대신 소켓 통신(연결 유지) 방식으로 응답 처리 가능

0개의 댓글