728x90
Spring 설정 XML 파일 (context-schedule.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:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <context:component-scan base-package="tipNTech.schedule" /> <task:annotation-driven /> </beans>
task 네임스페이스 추가
xmlns:task=http://www.springframework.org/schema/task
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd"
<task:scheduler id="gsScheduler" pool-size="10" />
<task:executor id="gsTaskExecutor" pool-size="10" />
<task:annotation-driven executor="gsTaskExecutor" scheduler="gsScheduler" />
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.0.xsd"
task 를 @ 애너테이션 기반으로 자동 검색
<task:annotation-driven/>
또는 아래와 같이 구체적으로 기술
<bean id="mySchedule " class="tipNTech.schedule.MySchedule" />
<task:scheduler id="gsScheduler" pool-size="10" />
<task:executor id="gsTaskExecutor" pool-size="10" />
<task:annotation-driven executor="gsTaskExecutor" scheduler="gsScheduler" />
Java 소스
package tipNTech.schedule; import org.springframework.stereotype.Component; import org.springframework.scheduling.annotation.Scheduled; @Component public class MySchedule { @Scheduled(cron="*/5 * * * * *") // 5초 간격 실행 public void updateUrbanServiceArea() { java.util.Calendar calendar = java.util.Calendar.getInstance(); java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("현재 시각: " + dateFormat.format(calendar.getTime())); } }
@Scheduled 애너테이션 사용
참고 cron 표현식
cron="분 시 일 월 요일 [년도]"
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 필드만 사용) | * * * * * 7L 해당월의 마지막 토요일을 의미 |
테스트 코드
package tipNTech.schedule; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Driver { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext( "/src/main/java/tipNTech/schedule/context-schedule.xml" ); } }
테스트 결과
반응형
'프로그래밍 TIP > Spring' 카테고리의 다른 글
Spring Boot 에서 Springloaded 사용하기 (2) | 2015.10.22 |
---|---|
[Thymeleaf] POM.xml 설정 (0) | 2015.09.02 |
이클립스 프로젝트 생성 후 초기화 (0) | 2015.01.06 |