2012년 11월 23일 금요일

Spring Scheduler 사용하기 (Quartz 대체기능)

몇 분마다

혹은

지정한 시각마다 지정한 함수를 호출하기위해 검색을 해보았지만,

Quartz라는 라이브러리는 예전 자료밖에 구할 수 없었다.

난 Spring 3.1버전을 사용중이라

예전 자료를 보고 해도 호환성이 안맞는지 전혀 될 생각이 없었다.

그래서 검색을 통해

Spring 기능 중에 Scheduler를 찾게 되었고,

구현방법이 굉장히 쉽고 심플했다.


나의 개발환경
jdk 1.6
spring 3.1

spring3 버전부터 어노테이션을 통한 스케쥴러 등록이 가능하다고 한다.
servlet.xml의

schema에


xmlns:task="http://www.springframework.org/schema/task" //추가

xsi:schemaLocation="http://www.springframework.org/schema/task/spring-task-3.0.xsd"

//추가





<task:scheduler id="Scheduler" pool-size="10" /> <task:executor id="TaskExecutor" pool-size="10"/> <task:annotation-driven executor="TaskExecutor" scheduler="Scheduler"/> // <beans>태그 안에 추가



Controller.java에서 아래 내용 추가


@Scheduled(cron="0 5 0 * * *")//초 분 시 일 월 주(년)

Public void recordDailyStats(){

 System.out.println("time to killing!!");

 smct.insert("recordDailyStats");

}

//간단하게 annotation으로 추가할 수 있다..




난 매일 00시 05분마다 통계를 내야하는 기능이 필요하므로,
위와 같이 간단히 코딩하였다.


Quarts를 써보지 않아서 뭔지는 잘 모르겠지만,
Scheduler가 정말 편한 것 같다

아래는 http://dev.anyframejava.org/docs/anyframe/plugin/scheduling/4.5.3/reference/html/ch02.html의 예제내용..
@Scheduled(fixedDelay=5000)
public void printWithFixedDelay() {
    System.out.println("execute printWithFixedDelay() of Annotated PrintTask at " 
        + new Date());
}

@Scheduled(fixedRate=10000)
public void printWithFixedRate() {
    System.out.println("execute printWithFixedRate() of Annotated PrintTask at " 
        + new Date());
} 

@Scheduled(cron="*/8 * * * * MON-FRI")
public void printWithCron() {
    System.out.println("execute printWithCron() of Annotated PrintTask at " 
        + new Date());
}


댓글 없음:

댓글 쓰기