JAVA에서 Spring 타이머의 두 가지 실현 방식
1. Java Timer 시간
우선 자바를 계승하겠습니다.util.TimerTask 클래스 실행 방법
import java.util.TimerTask;
public class EmailReportTask extends TimerTask{
@Override
public void run() {
...
}
}
스프링에서 정의...
Spring 타이머 구성
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="reportTimerTask" />
<property name="period">
<value>86400000value>
property>
bean>
timerTask 속성은 ScheduledTimerTask가 실행되는 항목을 알려줍니다.86400000은 24시간스프링 타이머 시작
Spring의 TimerFactory Bean은 가동 시 작업을 담당합니다.
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list><ref bean="scheduleReportTask"/>list>
property>
bean>
scheduledTimerTasks에 시작할 타이머 작업의 목록이 표시됩니다.delay 속성을 설정하여 시작 지연
<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" ref="reportTimerTask" />
<property name="period">
<value>86400000value>
property>
<property name="delay">
<value>3600000value>
property>
bean>
이 임무는 우리가 24시간 간격으로 한 번 운행할 수 있도록 규정할 수 있을 뿐, 어느 때까지는 정확하게 시작할 수 없다2. Quartz 타이머
우선 Quartz JobBean 클래스를 계승하여 execute Internal을 실현하는 방법입니다.
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>
여기에서 우리는 이메일 보고서 Job Bean을 직접 성명하지 않고 Job Detail Bean을 성명했다.이것은 Quartz의 특징입니다.JobDetail Bean은 Quartz의 org입니다.quartz.JobDetail의 하위 클래스입니다. jobClass 속성을 통해 Job 대상을 설정해야 합니다.Quartz를 사용하는 JobDetail의 또 다른 특이한 점은 Email Report Job의course Service 속성이 간접적으로 설정되어 있다는 것이다.JobDetail의 jobDataAsMap 속성은 jobClass에 설정된 각종 속성을 포함하여 맵을 받아들입니다.JobDetailBean이 실례화되면 Course Service Bean을 Email Report Job의 course Service 속성에 주입합니다.
타이머 시작
Quartz의 org.quartz.Trigger 클래스는 Quartz 작업을 언제, 어떤 주파수로 실행하는지 설명합니다.스프링은 두 개의 트리거인 Simple Trigger Bean과 Cron Trigger Bean을 제공합니다.
Simple Trigger Bean은 scheduled TimerTasks와 유사합니다.작업의 실행 빈도를 지정하고 scheduledTimerTasks 설정을 모방합니다.
<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>
start Delay도 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은 트리거할 시기를 알려 줍니다.가장 신비로운 것은 크론 표현식이다.Linux 시스템의 계획 작업은 보통 cron이 맡는다.cron 표현식은 공백으로 구분된 시간 요소가 최소 6개 (또는 7개) 있습니다.왼쪽에서 오른쪽:
1초 2.나누다시간월의 날짜(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회를 나타냅니다.)
타이머 시작
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref bean="cronReportTrigger"/>list>
property>
bean>
triggers 속성은 트리거를 받아들입니다.자, 본문의 내용은 여기까지 끝났습니다. 잘 썼죠? 부족한 점이 있습니다. 대협들이 귀중한 의견을 제시한 것을 환영합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.