Spring

스프링 스케줄러

스프링 설정

context-scheduler.xml을 적당한 위치에 생성한다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
	
	<bean id="cronTask" class="kim.minjoong.spring.CronTask" />
	<task:scheduler id="cronScheduler" pool-size="10" />
	<task:annotation-driven scheduler="cronScheduler" />

</beans>

root-context.xml에 위의 파일을 import 한다.

<import resource="classpath:config/context-scheduler.xml" />

클래스 생성

package kim.minjoong.spring;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;

public class CronTask {
    
	private static final Logger logger = LoggerFactory.getLogger(CronTask.class);
	
	@Scheduled(cron="* * * * * *")
	public void scheduleRun() {
		Calendar calendar = Calendar.getInstance();
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		logger.info("스케줄 실행 : " + dateFormat.format(calendar.getTime()));
	}

}

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 => 첫 번째 월요일

 

댓글

댓글 본문