스프링 설정
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 => 첫 번째 월요일