Spring 타이머 의 두 가지 실현 방식

본 고 는 Spring 타이머 의 두 가지 실현 방식 을 소개 합 니 다.자바 Timer 정시 와 Quartz 타이머,두 가지 Spring 타이머 의 실현 방식 은 각각 장점 이 있 으 며 구체 적 인 프로젝트 와 결합 하여 사용 여 부 를 고려 할 수 있 습 니 다.
두 가지 유행 하 는 Spring 타이머 설정 이 있 습 니 다.자바 의 Timer 류 와 OpenSymphony 의 Quartz 입 니 다.1.Java 타이머 시간
우선 자바 util.TimerTask 류 를 계승 하여 run 방법 을 실현 합 니 다.
package com.test;
import java.util.TimerTask;
  • publicclass CompanySampleTaskextends TimerTask{

  •     @Override
  •     publicvoid run() {

  •          ...
  •      }   

  • }
    Spring 정의
    Spring 타이머 설정

  • 86400000

  • timerTask 속성 은 ScheduledTimer Task 가 실행 하 는 것 을 알려 줍 니 다.86400000 은 24 시간 을 대표 하여 Spring 타이머 Spring 을 시작 하 는 Timer Factory Bean 이 정시 작업 을 시작 합 니 다                                           30000            60000                        이 임 무 는 24 시간 마다 한 번 만 운행 하도록 규정 할 수 있 습 니 다.특정한 시간 에 2.Quartz 타 이 머 를 시작 할 수 없습니다  다운로드 주소:http://www.opensymphony.com/quartz/download.action 먼저 Quartz JobBean 류 를 계승 하여 execute Internal 방법 을 실현 합 니 다
    
        
        
        
        
    1. import org.quartz.JobExecutionContext;
    2. import org.quartz.JobExecutionException;
    3. import org.springframework.scheduling.quartz.QuartzJobBean;
    4. public class EmailReportJob extends QuartzJobBean{
    5. protected void executeInternal(JobExecutionContext arg0)
    6. throws JobExecutionException {
    7. ...
    8. }
    9. }
    Spring 에서 정의 합 니 다
    
        
        
        
        
    1. <bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
    2. <property name="jobClass">
    3. <value>EmailReportJobvalue>
    4. property>
    5. <property name="jobDataAsMap">
    6.     <map>
    7.         <entry key="courseService">
    8.             <ref bean="courseService"/>
    9.             entry>
    10.     map>
    11. property>
    12. bean>
    여기 서 우 리 는 Email ReportJob Bean 을 직접 성명 하지 않 고 JobDetailBean 을 성명 합 니 다.이것 은 Quartz 의 특징 이다.JobDetailbean 은 Quartz 의 org.quartz.JobDetail 의 하위 클래스 입 니 다.jobClass 속성 을 통 해 Job 대상 을 설정 해 야 합 니 다.Quartz 를 사용 하 는 JobDetail 의 또 다른 특별한 점 은 Email ReportJob 의 courseService 속성 이 간접 적 으로 설정 되 어 있다 는 것 입 니 다.JobDetail 의 jobdataAsMap 속성 은 jobClass 에 설 정 된 각종 속성 을 포함 하여 맵 을 받 습 니 다.JobDetailBean 을 실례 화 할 때,이것 은 courseService Bean 을 Email ReportJob 의 courseService 속성 에 주입 합 니 다.타이머 Quartz 를 시작 하 는 org.quartz.Trigger 류 는 언제,어떤 주파수 로 Quartz 작업 을 실행 하 는 지 설명 합 니 다.Spring 은 두 개의 트리거 Simple Trigger Bean 과 Cron Trigger Bean 을 제공 합 니 다.Simple Trigger Bean 은 scheduled Timer Tasks 와 유사 합 니 다.작업 의 실행 빈 도 를 지정 합 니 다.scheduled Timer Tasks 설정 을 모방 합 니 다
    
        
        
        
        
    1. <bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    2. <property name="jobDetail" ref="reprotJob" />
    3. <property name="startDelay">
    4. <value>360000value>
    5. property>
    6. <property name="repeatInterval">
    7.     <value>86400000value>
    8. property>
    9. bean>
    startDelay 도 1 시간 지연 되 어 CronTriggerBean 이 지정 한 작업 의 정확 한 실행 시간 입 니 다
    
        
        
        
        
    1. <bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    2. <property name="jobDetail" ref="reprotJob" />
    3. <property name="cronExpression">
    4. <value>0 0 6 * * ?value>
    5. property>
    6. bean>
    속성 cronExpression 은 언제 실행 되 는 지 알려 줍 니 다.가장 신비 로 운 것 은 cron 표현 식 입 니 다.Linux 시스템 의 계획 임 무 는 보통 cron 이 맡 습 니 다.하나의 cron 표현 식 은 최소 6 개(7 개)의 빈 칸 으로 구 분 된 시간 요소 가 있 습 니 다.왼쪽 에서 오른쪽으로:1 초 2 분 3 시간 4 월 의 날짜(1-31)5 월(1-12 또는 JAN-DEC)6.주 중의 날짜(1-7 또는 SUN-SAT)7.년도(1970-2099)각 요소 가 표시 하 는 규정된 값(예 를 들 어 6),한 구간(9-12),목록(9,11,13)또는 하나의 어댑터(*).4 와 6 이라는 두 요 소 는 서로 배척 하기 때문에 물음표(?)를 설정 해 야 한다.설정 하고 싶 지 않 은 필드 를 표시 합 니 다."/"값 조합 은 중복 횟수(10/6 은 10 초 에 6 번 반복)를 표시 합 니 다
    Cron 트리거 는 일련의 특수 문 자 를 이용 하여 다음 과 같다.반사 선(/)문 자 는 증 량 값 을 나타 낸다.예 를 들 어 초 필드 에서'5/15'는 5 초부 터 15 초 에 한 번 씩 시작 하 는 것 을 의미한다.물음표(?)문자 와 알파벳 L 문 자 는 월 내 날짜 와 주 내 날짜 필드 에서 만 사용 할 수 있 습 니 다.물음 표 는 이 필드 에 구체 적 인 값 이 포함 되 어 있 지 않다 는 것 을 나타 낸다.따라서 월 내 날 짜 를 지정 하면 주 내 날짜 필드 에'?'를 삽입 할 수 있 습 니 다.주 내 날짜 값 이 중요 하지 않다 는 뜻 입 니 다.알파벳 L 문 자 는 last 의 줄 임 말이다.월 내 날짜 필드 에 놓 으 면 그 달 마지막 날 에 실 행 될 예정 임 을 나타 낸다.주 내 날짜 필드 에'L'이 따로 존재 하면'7'과 같 습 니 다.그렇지 않 으 면 그 달 내 주 내 날짜 의 마지막 인 스 턴 스 를 대표 합 니 다.그래서'0L'는 그 달 마지막 일요일 에 실 행 될 예정 이 라 고 밝 혔 다.월 내 날짜 필드 에 있 는 알파벳(W)문 자 는 지정 한 값 에 가장 가 까 운 근무일 에 실 행 됩 니 다.'1W'를 월 내 날짜 필드 에 넣 고 그 달의 첫 근무일 내 에 실행 을 배정 하 겠 다 고 밝 혔 다.우물 번호(\#)문 자 는 주어진 달 에 구체 적 인 근무일 인 스 턴 스 를 지정 합 니 다.'MON\#2'를 주 내 날짜 필드 에 넣 고 그 달 둘째 월요일 에 임 무 를 배정 하 겠 다 고 밝 혔 다.별표(*)문 자 는 연결 문자 로 이 필드 가 가능 한 모든 값 을 받 아들 일 수 있 음 을 나타 낸다.  필드 허용 값 이 허용 하 는 특수 문자  초 0-59,-*/  점수 0-59,-*/  시간 0-23,-*/  날짜 1-31,-*?/L W C  월 1-12 또는 JAN-DEC,-*/  월요일-7 또는 SUN-SAT,-*?/L C #  년(선택 가능)비 워 두 기,1970-2099,-*/  표현 식 의미  "0 0 12 * * ?" 매일 낮 12 시 촉발  "0 15 10 ? * *" 매일 오전 10:15 촉발  "0 15 10 * * ?" 매일 오전 10:15 촉발  "0 15 10 * * ? *" 매일 오전 10:15 촉발  "0 15 10 * * ? 2005"2005 년 의 매일 오전 10:15 촉발  "0 * 14 * * ?" 매일 오후 2 시 부터 오후 2 시 59 분 까지 1 분 마다 촉발  "0 0/5 14 * * ?" 매일 오후 2 시 부터 오후 2 시 55 분 까지 5 분 마다 촉발  "0 0/5 14,18 * * ?" 매일 오후 2 시 부터 2 시 55 분 사이 와 오후 6 시 부터 6 시 55 분 사이 에 5 분 마다 촉발 합 니 다.  "0 0-5 14 * * ?" 매일 오후 2 시 부터 오후 2 시 까지 1 분 마다 촉발  "0 10,44 14 ? 3 WED"매년 3 월 수요일 오후 2:10 과 2:44 촉발  "0 15 10 ? * MON-FRI"월요일 부터 금요일 까지 오전 10:15 트리거  "0 15 10 15 * ?" 매월 15 일 오전 10:15 촉발  "0 15 10 L * ?" 매월 마지막 날 오전 10:15 촉발  "0 15 10 ? * 6L"매월 마지막 금요일 오전 10:15 촉발  "0 15 10 ? * 6L 2002-2005"2002 년 부터 2005 년 까지 매월 마지막 금요일 오전 10:15 촉발  "0 15 10 ? * 6\#3"매월 셋째 금요일 오전 10:15 촉발  매일 아침 6 시 06 분**두 시간 마다 0*/2***  오후 11 시 부터 오전 8 시 까지 두 시간 간격 으로 오전 8 시 23 분-7/2,8***매달 4 일과 매주 월요일 부터 수요일 오전 11 시 01114*1-3  1 월 1 일 오전 4 시 041 1*타이머 시작
    
        
        
        
        
    1. <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    2.     <property name="triggers">
    3.        <list><ref bean="cronReportTrigger"/>list>
    4.     property>
    5. bean>
    triggers 속성 은 트리거 를 받 습 니 다

    좋은 웹페이지 즐겨찾기