ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SPRING] 스프링 스케쥴링 추가 @Scheduled
    Spring/spring boot 및 기타 2020. 9. 27. 21:28

    어플리케이션 내에서 스케쥴링 해야하는 일이 생긴다.

     

    스프링부트에서 사용하려명 Main 클래스에 @EnableScheduling 을 추가해주면 된다.

     

    @Component
    public class Scheduler {
    
    	@Scheduled(fixedDelay = 3000)
    	public void excute() {
        	System.out.println("스케쥴러");
    	}
    }    

    위의 코드는 3초마다 실행이 된다.

    fixedDelay 는 스케쥴러가 끝나고 3초이고, fixedRate 는 3초마다 주기적으로 실행을 한다는 의미이다.

    끝나는 시점이 중요하면 fixedDelay 를 사용해야 한다.

     

    그리고 크론탭과 같은 문법 사용이 가능하다. 

    ex)

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

    시간 설정 @scheduled(cron=" ") * 리눅스 crontab 과 같은 설정방법

    ex> @Scheduled(cron="0 0 02 * * ?") = 매일 새벽2시에 실행

    ex> @Scheduled(cron="0 0 02 2,20 * ?") = 매월 2일,20일 새벽2시에 실행


    시간 설정 @scheduled(cron=" ")  * 리눅스 crontab 과 같은 설정방법

    ex> @Scheduled(cron="0 0 02 * * ?") = 매일 새벽2시에 실행

    ex> @Scheduled(cron="0 0 02 2,20 * ?") = 매월 2일,20일 새벽2시에 실행

     

    스케쥴러 cron 양식

    초 0-59 , - * / 

    분 0-59 , - * / 

    시 0-23 , - * / 

    일 1-31 , - * ? / L W

    월 1-12 or JAN-DEC , - * / 

    요일 1-7 or SUN-SAT , - * ? / L # 

    년(옵션) 1970-2099 , - * /

    * : 모든 값

    ? : 특정 값 없음

    - : 범위 지정에 사용

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

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

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

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

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

     

    예제) Expression Meaning 

    초 분 시 일 월 주(년)

     "0 0 12 * * ?" : 아무 요일, 매월, 매일 12:00:00

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

     "0 15 10 * * ?" : 아무 요일, 매월, 매일 10:15:00 

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

     "0 15 10 * * ? : 2005" 2005년 아무 요일이나 매월, 매일 10:15 

     "0 * 14 * * ?" : 아무 요일, 매월, 매일, 14시 매분 0초 

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

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

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

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

     "0 15 10 ? * MON-FRI" : 월~금, 매월, 아무 날이나 10:15:00 

     "0 15 10 15 * ?" : 아무 요일, 매월 15일 10:15:00 

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

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

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

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

     

    반응형

    댓글

Designed by Tistory.