Spring 타이머 의 두 가지 실현 방식
두 가지 유행 하 는 Spring 타이머 설정 이 있 습 니 다.자바 의 Timer 류 와 OpenSymphony 의 Quartz 입 니 다.1.Java 타이머 시간
우선 자바 util.TimerTask 류 를 계승 하여 run 방법 을 실현 합 니 다.
package com.test;
import java.util.TimerTask;
@Override
...
}
Spring 정의
Spring 타이머 설정
timerTask 속성 은 ScheduledTimer Task 가 실행 하 는 것 을 알려 줍 니 다.86400000 은 24 시간 을 대표 하여 Spring 타이머 Spring 을 시작 하 는 Timer Factory Bean 이 정시 작업 을 시작 합 니 다
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- import org.springframework.scheduling.quartz.QuartzJobBean;
-
- public class EmailReportJob extends QuartzJobBean{
- protected void executeInternal(JobExecutionContext arg0)
- throws JobExecutionException {
- ...
- }
- }
Spring 에서 정의 합 니 다
- <bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
- <property name="jobClass">
- <value>EmailReportJobvalue>
- property>
- <property name="jobDataAsMap">
- <map>
- <entry key="courseService">
- <ref bean="courseService"/>
- entry>
- map>
- property>
- 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 설정 을 모방 합 니 다
- <bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
- <property name="jobDetail" ref="reprotJob" />
- <property name="startDelay">
- <value>360000value>
- property>
- <property name="repeatInterval">
- <value>86400000value>
- property>
- bean>
startDelay 도 1 시간 지연 되 어 CronTriggerBean 이 지정 한 작업 의 정확 한 실행 시간 입 니 다
- <bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail" ref="reprotJob" />
- <property name="cronExpression">
- <value>0 0 6 * * ?value>
- property>
- 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*타이머 시작
- <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list><ref bean="cronReportTrigger"/>list>
- property>
- bean>
triggers 속성 은 트리거 를 받 습 니 다이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.