JVM/Spring

[Spring] Spring Scheduler 간단하게 설정하기

헹창 2022. 3. 7.
반응형

일정주기마다 특정 작업을 실행하기 위해 스프링 스케쥴러를 사용하여 구현하는 방법을 살펴보자.

 

Scheduler Class 생성

package com.haenny;

public class Test {

	public void start() {
		// 주기적으로 실행할 코드
	}
}

 

dispatcher-servlet.xml 설정

일정 주기마다 실행하는 스케쥴러 등록을 위해 bean 태그에 task를 추가한다.

/* 스케줄러를 위한 xmlns */
xmlns:task="http://www.springframework.org/schema/task"
/* task shcema */
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.3.xsd

위에서 생성한 스케쥴러 클래스 bean을 추가한다.

/* 스케쥴러 파일의 참조 id와 패키지 설정 */
<bean id="testScheduler" class="com.haenny.Test" />
	    
<task:scheduler id="taskScheduler" pool-size="10" />
<task:scheduled-tasks scheduler="taskScheduler">
	/* 스케쥴러 파일의 참조 id와 메소드명, cron 표현식 설정 */
	<task:scheduled ref="testScheduler" method="start" cron="0/10 * * * * *" />
</task:scheduled-tasks>

 

 

 

크론 표현식

크론(Cron)을 구동할 때 스케쥴링의 파라미터로 사용되는 식을 크론 표현식(Cron Expressions)라고 한다. 유닉스/리눅스 기반의 스케쥴러에도 사용되지만 Quatz 스케줄러 에서도 사용된다. 크론 표현식은 필드와 특수문자를 조합하여 스케쥴링을 조절할 수 있다.

크론 표현식: 구성

크론 표현식은 아래와 같은 형태로 구성된다. 리눅스/유닉스 크론 표현식에서는 5개 필드가 사용되고, 쿼츠 크론 표현식에서는 7개의 필드가 사용된다.

초 분 시 일 월 주 년

크론 표현식: 필드

초(Seconds)

  • 값 범위 : 0 ~ 59
  • 허용 특수문자 : * , - /
  • 리눅스/유닉스 크론탭에서는 사용되지 않는다.

분(Minutes)

  • 값 범위 : 0 ~ 59
  • 허용 특수문자 : * , - /

시(Hours)

  • 값 범위 : 0 ~ 23
  • 허용 특수문자 : * , - /

일(Day of month)

  • 값 범위 : 1 ~ 31
  • 허용 특수문자 : * , - ? L W

월(Month)

  • 값 범위 : 1 ~ 12 또는 JAN ~ DEC
  • 허용 특수문자 : * , - /

주(Day of week)

  • 값 범위 : 0 ~ 6 또는 SUN ~ SAT
  • 허용 특수문자 : * , - ? L #

년(Year)

  • 값 범위 : 생략 또는 1970 ~ 2099
  • 허용 특수문자 : * , - /
  • 리눅스/유닉스 크론탭에서는 사용되지 않는다.

크론 표현식: 특수문자

  • * : 모든 값(매시, 매일, 매주처럼 사용한다.)
  • ? : 특정 값이 아닌 어떤 값이든 상관 없음
  • - : 범위를 지정할 때
  • , : 여러 값을 지정할 때
  • / : 증분값, 즉 초기값과 증가치를 설정할 때
  • L : 지정할 수 있는 범위의 마지막 값 표시
  • W : 가장 가까운 평일(weekday)을 설정할 때
  • # : N번 째 특정 요일을 설정할 때

크론 표현식 예제

매 10분마다

0 0/10 * * * *
 

매 3시간마다

0 0 0/3 * * *
 

2018년도 매일 14시 30분마다

0 30 14 * * * 2018
 

매일 10시 ~ 19시 사이에 10분 간격으로

0 0/10 10-19 * * *
 

매일 10시와 19시에만 10분 간격으로

0 0/10 10,19 * * *
 

매달 25일 01시 30분에

0 30 1 25 * *
 

매주 월, 금요일 10시와 19시 사이 10분마다

0 10 10-19 ? * MON,FRI
 

매달 마지막날 15시 30분

0 30 15 L * *
 

2017~2018년 매월의 마지막 토요일 오후 1시 20분

0 20

 

 

cron 표현식 참고

 

Spring task scheduler Cron Expression 크론 표현식

Spring task scheduler Cron Expression 크론 표현식 이번 포스팅에서는 매번 해깔리는 크론 표현식에 대해 자세히 알아보도록 하겠습니다. 크론 표현식이 사용되는 Spring task scheduler 에 대해서는 아래의 Lin

aljjabaegi.tistory.com

 

728x90
반응형

댓글

추천 글