OPEN HYPER STEP
← 목록으로 (Java+Spring)
JAVA · 62 / 69
java
CHAPTER 62 / 69
읽기 약 2
FUNCTION

스케줄러 Scheduler


핵심 개념

@Scheduled로 주기적 작업을 실행한다. cron 표현식, fixedRate, fixedDelay, 동적 스케줄링, 분산 환경 고려사항을 익힌다.

코드 분석
JAVA📋 코드 (38줄)
// @EnableScheduling 활성화
@SpringBootApplication
@EnableScheduling
public class DemoApplication { ... }

// SchedulerService.java
@Component
@RequiredArgsConstructor
public class SchedulerService {
    private final UserRepository userRepository;
    private final EmailService emailService;

    // 매일 오전 9시 실행
    @Scheduled(cron = "0 0 9 * * *")
    public void dailyReport() {
        long count = userRepository.count();
        log.info("일일 사용자 수: {}", count);
    }

    // 10분마다 실행 (이전 작업 종료 후 10분)
    @Scheduled(fixedDelay = 600_000)
    public void cleanExpiredTokens() {
        tokenRepository.deleteExpired(LocalDateTime.now());
    }

    // 5분마다 실행 (시작 기준)
    @Scheduled(fixedRate = 300_000,
               initialDelay = 10_000) // 앱 시작 10초 후 첫 실행
    public void healthCheck() {
        log.info("헬스 체크: {}", LocalDateTime.now());
    }
}

// cron 표현식: 초 분 시 일 월 요일
// "0 0 9 * * *"       → 매일 09:00:00
// "0 0/30 9-18 * * *" → 9~18시 30분마다
// "0 0 0 1 * *"       → 매월 1일 자정
// "0 0 0 ? * MON"     → 매주 월요일 자정

AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

이 Spring '스케줄러 Scheduler' 코드에서
DI 관련 버그·순환 참조·트랜잭션 누수를
찾아서 수정해줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

'스케줄러 Scheduler'를 Spring Boot 3.x로 구현한
실전 API 코드(컨트롤러+서비스+레포지토리+테스트)를 완성형으로 만들어줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

이 Spring '스케줄러 Scheduler' 프로젝트의 빈 구조와
의존성 트리를 전체 분석하고
N+1 쿼리·순환 참조·성능 병목을 정리해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

Spring '스케줄러 Scheduler' vs Quarkus·Micronaut·Ktor의
동일 기능 구현을 2026년 한국 채용 시장 기준으로
솔직히 비교해줘.

⭐ 이것만 기억하세요
스케줄러 Scheduler 이 3가지만 확실히 잡으세요
1.반복 작업을 수동으로 실행하면 누락되고, 서버 재시작 시 스케줄이 초기화됩니다
2.@Scheduled(cron = '0 0 9 * * *')로 매일 9시에 실행하는 것처럼 크론 표현식으로 주기를 정의합니다
3.다음 챕터에서 응답 속도를 높이는 캐싱을 배웁니다


공유하기
진행도 62 / 69