반응형
@Scheduled 어노테이션을 통해서 Spring 배치 작업을 할 수 있습니다.
fixedRate로 Interval 시간 지정하는 방법,
@Scheduled(cron=" . . . ")와 같이 Cron 형식으로 입력하는 방법이 있습니다.
1. fixedRate : Interval 지정
@Scheduled(fixedRate = 3000) 과 같이 fixedRate 뒤에 milliseconds를 입력합니다.
fixedRate = 3000을 입력하면 3초마다 반복 됩니다.
@Scheduled(fixedRate = 3000)
public void everyThreeSecond() {
log.info("현재시간은 {}", dateFormat.format(new Date()));
}
}
2. Cron
패턴은 왼쪽부터 [초, 분, 시, 일, 월, 요일]을 나타내는 6개의 공백으로 구분된 단일 필드 목록입니다. 요일은 MON, TUE, WED, THU, FRI, SAT, SUN과 같이 3글자로 나타냅니다.
예제
"0 0 * * * *" = 매일 1시간마다
"*/20 * * * * *" = 매일 20초간격으로
"0 0 5-7 * * *" = 매일 5시, 6시, 7시
"0 0 6,15 * * *" = 매일 오전 6시, 오후 3시
"0 0/30 5-7 * * *" = 매일 5:00, 5:30, 6:00, 6:30, 7:00 and 7:30
"0 0 9-17 * * MON-FRI" = 월요일,화요일,수요일,목요일,금요일 09:00~17:00까지 한시간마다
"0 0 0 25 12 ?" = 매년 크리마스 자정에
실전 사용
@Scheduled(cron="0 */5 * * * *")
public void testTask() throws InterruptedException, ExecutionException, IOException {
StopWatch watch = new StopWatch();
log.info("testTask");
watch.start();
testService.go();
watch.stop();
log.info(String.valueOf(watch.getTotalTimeMillis()));
}
스프링부트 사용 시
@EnableScheduling 어노테이션을 @SpringBootApplication이 있는 클래스에 추가합니다.
@EnableScheduling
@SpringBootApplication(scanBasePackages = "kr.co.test.go")
public class GoApplication {
public static void main(String[] args) {
SpringApplication.run(GoApplication.class, args);
}
}
반응형
'프로그래밍 > SpringFramework' 카테고리의 다른 글
스프링부트 @Controller 1 (0) | 2021.04.19 |
---|---|
Springboot MariaDB Mybatis 사용법 (0) | 2021.04.15 |