스프링의 스케쥴러를 사용하기 위해
servlet-context.xml에 task를 추가한다
1 | xmlns:task=http://www.springframework.org/schema/task |
xsi:schemaLocation 에도 추가
1 2 | http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd |
아래 내용도 추가
1 2 3 | <task:executor id="executor" pool-size="5-10" queue-capacity="255" /> <task:scheduler id="scheduler" pool-size="3" /> <task:annotation-driven executor="executor" scheduler="scheduler" /> |
void타입의 return 이 없고 파라미터가 없는 메서드에 사용가능하다
@Scheduled(fixedRate=5000)
fixedRate : 지정한 시간 주기로 작업을 실행
fixedDelay : 지정된 시간 간격으로 작업을 실행
cron : cron 표현식을 이용해서 작업을 실행
5000 -> 5초
아래 오류 발생시...
cvc-complex-type.2.4.c: The matching wildcard is strict...
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 이 부분을
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 으로 변경해주면
오류는 발생하지 않는다. (3.0에서 3.2로)
---------------------------------------------------------------------
출처 : http://iris2380.egloos.com/266805 //xml 설정 관련 부분 참조
http://blog.naver.com/PostView.nhn?blogId=charmhcs&logNo=30143084054 // 설정 및 소스 코드 부분 참조
http://expert0226.tistory.com/207 // cron 명령어 부분 참조
1. 설정
아래와 같이 스키마 추가.
--------------------
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
--------------------
아래와 같이 설정 추가.
특별히 이름의 의미는 없다. 그냥 그대로 쓰면 된다.
스케줄러 10개, 실행 10개라고 생각하면 될 듯.. (솔직히 정확한 의미는 모르겠다;; 대충;;)
--------------------
<task:scheduler id="taskScheduler" pool-size="10" />
<task:executor id="taskExecutor" pool-size="10"/>
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler"/>
--------------------
2. 메소드에서 실행.
--------------------
//10:40분 (cron="0 40 10 ? * THU")
@Scheduled(cron="10 11 22 ? * WED")
public void sendMail_THU(){
sendMail("PM", "A", "");
}
--------------------
@Scheduled(fixedRate=1000) // 1초마다 한번씩 실행
@Scheduled(fixedDelay=1000) // 메서드 종료 시점에서 1초후 실행
Cron 표현식
총 7개의 필드 있고 마지막 필드(년도)는 생략 가능하다
필드이름 | 허용 값 |
초(Seconds) | 0 ~ 59 |
분(Minutes) | 0 ~ 59 |
시(Hours) | 0 ~ 23 |
날(Day-of-month) | 1 ~ 31 |
달(Month) | 1 ~ 12 or JAN ~ DEC |
요일(Day-of-week) | 1 ~ 7 or SUN-SAT |
년도(Year) (선택가능) | 빈값, 1970 ~ 2099 |
Cron 표현식의
특수문자
표현식 | 설명 | 예시 |
* | 모든 수를 나타냄 | |
- | 값의 사이를 의미 | * 10-13 * * * * 10,11,12,13분에 동작함 |
, | 특정값 지칭 | * 10,11,13 * * * * 10,11,13분에 동작함 |
/ | 값의 증가를 표현 | * 0/5 * * * * 0분부터 시작해서 5분마다 동작 |
? | 특별한 값이 없음을 나타냄(day-of-month, day-of-week 필드만 사용) | |
L | 마지막 날을 나타냄(day-of-month, day-of-week 필드만 사용) |
'IT노트 > eGov&Spring F/W' 카테고리의 다른 글
Interceptor 와 Filter 의 차이점 (0) | 2015.01.30 |
---|---|
The Spring Tool Suite™ (STS) (0) | 2015.01.30 |
[Spring Framework] 3. HandlerMapping (0) | 2015.01.30 |
공통컴포넌트 all-in-one 2.2.0 (0) | 2015.01.30 |
전자정부 프레임워크의 공통컴포넌트 (0) | 2015.01.30 |