java 정시 스케줄러(Quartz) 사용 실례

1. Quartz 타이머 실행 프로세스 Quartz는 실행 작업, 트리거를 정의하고 작업 중 실행 클래스 대상과 대상을 지정하는 방법, 트리거에서 실행 시간, 실행 임무를 정의해야 한다.
2, WEB 환경에서의 구성

<!-- -->
<bean id = "tmpTask" class="com.tmp.task.BcdTask"/>
<!-- , tmpWork BcdTask -->
<bean id="tmpJob"
    class=" org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject">
        <ref bean = "tmpTask"/>
    </property>
    <property name="targetMethod" value="tmpWork"/>
</bean>
<!-- -->
<bean id="tmpTrigger"
    class=" org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
        <ref bean = "tmpJob"/>
    </property>
    <property name=" cronExpression">
        <!-- 10 5 -->
           <value>10/5 * * * * ?</value>
    </property>
</bean>
<!-- , -->
<bean id="triggerManager" autowire="no"
    class=" org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name=" startupDelay" value="60"/>
    <property name="triggers">
            <list>
                <ref bean ="tmpTrigger"/>
            </list>
    </property>
</bean>
startupDelay를 지정하면 응용 프로그램이 시작된 후에야 QuartzScheduler가 시작됩니다.속성 지정 가능
lazy-init = "false"는 시작 지연을 취소합니다. 즉, 프로그램이 시작될 때 바로 스케줄러를 실행합니다.
3. 트리거 Cron 표현식 Cron 표현식 시간 필드 Cron 표현식의 시간 필드는 수치를 설정할 수 있는 것 외에 일부 특수한 문자를 사용하여 목록, 범위, 어댑터 등의 기능을 제공할 수 있다.
● 별표(*): 모든 필드에서 해당 시간대의 매 시간을 나타낼 수 있습니다. 예를 들어 *분 필드에서 매 분을 나타낼 수 있습니다.
● 물음표(?):이 문자는 날짜와 요일 필드에서만 사용되며, 보통 "의미 없는 값"으로 지정되어 있으며, 점위부호에 해당한다.
● 빼기 기호(-): 시간 필드에서'10-12'를 사용하면 10~12시, 즉 10,11,12를 나타낸다.
● 쉼표(,): 요일 필드에서 "MON, WED, FRI"를 사용하면 월요일, 수요일, 금요일을 나타냅니다.
● 슬래시(/): x/y는 같은 걸음 길이의 서열을 나타내고 x는 시작값, y는 증량 걸음 길이값을 나타낸다.만약 분 필드에서 0/15를 사용한다면 0, 15, 30과 45초를 나타내고, 5/15는 분 필드에서 5, 20, 35, 50을 나타내면 너도 */y를 사용할 수 있다. 이것은 0/y와 같다.
● L: 이 문자는 날짜와 요일 필드에서만 사용되며 "Last"의 뜻을 나타내지만 두 필드에서는 의미가 다릅니다.L은 날짜 필드에서 이달의 마지막 날, 예를 들어 1월의 31일, 비윤년 2월의 28일을 나타낸다.만약 L이 요일에 사용된다면 토요일을 나타내며 7과 같다.단, 만약에 L이 요일 필드에 나타나고 앞에 수치 X가 있다면'이달의 마지막 X일'을 나타낸다. 예를 들어 6L은 그 달의 마지막 금요일을 나타낸다.
● W: 이 문자는 날짜 필드에만 나타날 수 있으며 선행 날짜에 대한 수식으로 해당 날짜와 가장 가까운 근무일을 나타냅니다.예를 들어 15W는 해당 달 15일과 가장 가까운 근무일을 표시하고 해당 달 15일이 토요일이면 14일 금요일과 일치한다.15일이 일요일이면 16일 월요일과 일치한다.만약 15일이 화요일이라면, 결과는 15일 화요일이다.그러나 연관된 일치 날짜는 달을 넘을 수 없습니다. 만약 당신이 1W를 지정한다면, 1일이 토요일이라면, 결과는 지난달 마지막 날이 아니라 3일 월요일입니다.W 문자열은 단일 날짜만 지정할 수 있고 날짜 범위를 지정할 수 없습니다.
● LW 조합: 날짜 필드에서 LW를 조합하여 사용할 수 있으며, 그 달의 마지막 근무일을 의미한다.
● 우물 번호 (#): 이 문자는 요일 필드에서만 사용할 수 있으며 해당 달의 근무일을 나타냅니다.예를 들어 6#3은 그 달의 셋째 금요일(6는 금요일을 나타내고, #3은 현재의 셋째를 나타낸다)을 나타내고, 4#5는 그 달의 다섯째 수요일을 나타내며, 그 달에 다섯째 수요일이 없다고 가정하면 촉발하지 않는 것을 무시한다.
● C: 이 문자는 날짜와 요일 필드에만 사용되며 "Calendar"의 뜻을 나타냅니다.그것은 계획과 관련된 날짜를 의미하며, 날짜가 연결되지 않으면 달력의 모든 날짜에 해당한다.예를 들어 5C는 날짜 필드에서 달력 5일 이후의 첫날과 같다.1C는 요일 필드에서 일요일 후의 첫날과 같다.
Cron 표현식은 특수 문자의 대소문자에 민감하지 않으며 요일을 나타내는 줄임말의 영문 대소문자에도 민감하지 않습니다.
그 중에서 각 요소는 하나의 값(예를 들어 6), 하나의 연속 구간(9-12), 하나의 간격(8-18/4)(/는 4시간 간격), 하나의 목록(1,3,5), 어댑터일 수 있다."월의 날짜"와 "주의 날짜"두 요소가 서로 배척되기 때문에, 그 중 하나를 설정해야 합니까?
0 0 10,14,16 * * ? 매일 오전 10시, 오후 2시, 4시 0/30 9-17 *?아침 9 박 5일 근무시간 30분당 0 12?*WED는 매주 수요일 낮 12시에 "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/5 14*?"매일 오후 2시부터 오후 2시 55분까지 5분마다 "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 트리거
"0 5 2 1 8?*"매년 8월 1일 2:5 터치
일부 하위 표현식은 범위나 목록을 포함할 수 있다
예를 들어 하위 표현식(일)은 "MON-FRI", "MON, WED, FRI", "MON-WED, SAT"
"*"문자는 가능한 모든 값을 나타냅니다.
따라서 "*"는 하위 표현식(월)에서 각 달의 의미를 나타내고, "*"는 하위 표현식(일)에서 매주 의미를 나타냅니다.
"/"문자는 수치의 증가분을 지정합니다.
예를 들어 하위 표현식(분)에서 0/15는 0분부터 15분까지
하위 표현식 (분) 의 "3/20"은 3분부터 20분마다 (3, 23, 43) 의 의미와 같다
“?”문자는 일 (월) 과 일 (주) 두 개의 하위 표현식에만 사용되며 값을 지정하지 않음을 나타냅니다.
두 개의 하위 표현식 중 하나에 값이 지정되면 충돌을 피하기 위해 다른 하위 표현식의 값을'?'로 설정해야 합니다.
"L"문자는 일 (월) 과 일 (주) 두 개의 하위 표현식에만 사용되며, 단어 "last"의 줄임말이다
그러나 두 자 표현식의 의미는 다르다.
일 (월) 하위 표현식에서 "L"은 한 달의 마지막 날을 나타냅니다.
일 (일) 자 표현식에서'L'은 일주일의 마지막 날, 즉 SAT 를 나타낸다
만약 "L"앞에 구체적인 내용이 있다면, 그것은 다른 의미를 가지고 있다
예를 들어'6L'은 이달의 꼴찌 6일을 나타내고,'FRIL'은 이달의 마지막 금요일을 나타낸다
참고: "L"매개 변수를 사용할 때 목록이나 범위를 지정하지 마십시오. 이로 인해 문제가 발생할 수 있습니다.

좋은 웹페이지 즐겨찾기