@Scheduled  어노테이션

주기적으로 해야되는 작업을 쉽게 적용할 수 있도록 도와주는 어노테이션

스프링 3.1 이상부터 지원 

 

@Scheduled  사용 준비

@SpringBootApplication 어노테이션이 있는 어플리케이션 자바 파일에 @EnableScheduling 어노테이션 추가

@SpringBootApplication
@EnableScheduling
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@Scheduled  사용 

1. cron 

cron 표현식을 지원

초 분 시 일 월 주(년) 순으로 표기 

@Scheduled(cron = "0 0 9 * * *") //매일 9시마다
public void TestScheduler(){
        System.out.println("테스트");
}
0 ~ 59
0 ~ 59
0 ~ 23
1 ~ 31
1 ~ 12 
요일 1 ~ 7 (1 => 일요일, 7=> 토요일) 
년도 1970 ~ 2099

* : 모든 값

? : 특정 값 없음

- : 범위 지정에 사용

, : 여러 값 지정 구분에 사용

/ : 초기값과 증가치 설정에 사용

L : 지정할 수 있는 범위의 마지막 값

W : 월~금요일 또는 가장 가까운 월/금요일

# : 몇 번째 무슨 요일 2#1 => 첫 번째 월요일

 

사용 예시

 "0 0 02 * * ?" : 매일 새벽 두시

 "0 0 12 * * ?" : 매일 정오

 "0 15 10 ? * *" : 모든 요일, 매월, 아무 날이나 10:15:00 

 "0 15 10 * * ? *" : 모든 연도, 아무 요일, 매월, 매일 10:15 

 "0 0/5 14,18 * * ?" : 아무 요일, 매월, 매일, 14시, 18시 매 5분마다 0초 

 "0 0-5 14 * * ?" : 아무 요일, 매월, 매일, 14:00 부터 매 14:05까지 매 분 0초 

 "0 10,30 14 ? 6 WED" : 6월의 매 수요일, 아무 날짜나 14:10:00, 14:30:00 

 "0 15 10 L * ?" : 아무 요일, 매월 마지막 날 10:15:00 

 "0 15 10 ? * 7L" : 매월 마지막 토요일 아무 날이나 10:15:00 

 "0 15 08 ? * 6L 2002-2005" : 2002년부터 2005년까지 매월 마지막 금요일 아무 날이나 0815:00 

 "0 15 08 ? * 6#3" : 매월 3번째 금요일 아무 날이나 08:15:00

 

2. fixedDelay 

해당 메소드가 종료된 시점부터 다음 메소드 실행 시점까지의 주기

시간 단위는 밀리세컨드

@Scheduled(fixedDelay=1000)
public void TestScheduler(){
        System.out.println("테스트");
}

3. fixedRate

해당 메소드가 시작된 시점부터 다음 메소드 실행 시점까지의 주기

시간 단위는 밀리세컨드

@Scheduled(fixedRate=1000)
public void TestScheduler(){
        System.out.println("테스트");
}

 

 

참고 사이트

https://rooted.tistory.com/12

https://toma0912.tistory.com/17

https://jeong-pro.tistory.com/186

https://java119.tistory.com/34
https://javafactory.tistory.com/1386

+ Recent posts