java
CHAPTER 62 / 69
읽기 약 2분
FUNCTION
스케줄러 Scheduler
핵심 개념
@Scheduled로 주기적 작업을 실행한다. cron 표현식, fixedRate, fixedDelay, 동적 스케줄링, 분산 환경 고려사항을 익힌다.
코드 분석
// @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