Java 고유의 java.util.Timer 클래스로, 이 클래스를 사용하면 java.util.TimerTask 작업을 예약할 수 있습니다. 이 방법을 사용하면 프로그램이 특정 빈도로 실행될 수 있지만 지정된 시간에는 실행되지 않습니다.
특정 시간이나 특정 빈도로 프로그램을 실행할 수 있는 비교적 강력한 스케줄러인 Quartz를 사용하세요. 구성이 약간 복잡합니다.
Spring 3.0 이상에 포함된 작업은 경량 Quartz라고 볼 수 있으며 Quartz보다 사용하기가 훨씬 간단합니다.
잡 클래스는 상속이 필요한 Quartz와 같은 특정 직업 클래스 기본 클래스에서 상속해야 합니다. org.springframework.scheduling .quartz.QuartzJobBean에서 java.util.Timer는 java.util.TimerTask에서 상속해야 합니다.
작업 클래스는 일반 Java 클래스이므로 기본 클래스에서 상속할 필요가 없습니다.
참고: 저는 개인적으로 두 번째 방법을 사용하는 것을 권장합니다. 모든 클래스가 공통 클래스이고 미리 다르게 취급할 필요가 없기 때문입니다.
2. 사용방법
Quartz
Java 코드
org.quartz.JobExecutionException 가져오기
import org.springframework.scheduling.quartz.QuartzJobBean;
public class Job1
QuartzJobBean {private int 시간 초과;
this.timeout = 시간 초과
}
/*** 예약할 특정 작업
*/
void executionInternal(JobExecutionContext context)
}
2단계: 스프링 구성 파일에서 작업 클래스 JobDetailBean
Xml 코드 구성
bean name="job1" class="org.springframework.scheduling.quartz.JobDetailBean"> 속성 name="jobClass" value=
"com.gy.Job1"property name="jobDataAsMap" >
map>
entry key="timeout" value=
"0"map>
property>
설명: org.springframework.scheduling.quartz.JobDetailBean에는 두 가지 속성이 있습니다. jobClass 속성은 Java 코드에서 정의한 작업 클래스이고, jobDataAsMap 속성은 작업 클래스에 주입되어야 하는 속성 값입니다. 3단계: 작업 예약의 트리거 방법(트리거) 구성
org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling이 있습니다. 첫 번째 SimpleTriggerBean은 30분마다 한 번씩 실행되는 것과 같이 특정 빈도의 작업 호출만 지원합니다. 구성 방법은 다음과 같습니다.
bean
id=
"simpleTrigger"class=
"org.springframework.scheduling .quartz.SimpleTriggerBean">
name="jobDetail" ref="job1" /> < ;property
name="startDelay""0" /> property name="repeatInterval" value="2000" />
bean> 두 번째 유형의 CronTriggerBean은 매일 12시에 한 번 실행하는 것과 같이 지정된 시간에 한 번 실행을 지원합니다.
구성 방법은 다음과 같습니다.Xml 코드 bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 속성 name="jobDetail" ref= > < ;property name= /> 콩 > cronExpression 표현식의 구문은 부록을 참조하세요. Xml 코드
"org.springframework.scheduling.quartz.SchedulerFactoryBean" >
/>
listprop 어티
>bean>
설명: 이 매개변수는 이전에 구성된 트리거의 이름을 지정합니다. 5단계: 애플리케이션을 시작하고 프로젝트를 tomcat이나 다른 컨테이너에 배포하세요.
둘째, 직업 클래스는 특정 기본 클래스를 상속받지 않습니다. Spring은 두 가지 클래스 덕분에 이 메서드를 지원할 수 있습니다: org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean1단계: 작업 클래스 작성
Java 코드public class Job2 {
publicvoid doJob2 () {
시스템 .out.println(
"QuartzJobBean 메서드 상속 안 함 - 예약 진행 중...");
이것은 일반적인 클래스임을 알 수 있습니다. 방법이 있습니다. 2단계: 직업 클래스 구성
Xml 코드
bean id="job2"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"&g
< ;property name="targetObject">
bean class="com.gy.Job2" />
property>
org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling이 있습니다. 첫 번째 SimpleTriggerBean은 30분마다 한 번씩 실행되는 것과 같이 특정 빈도의 작업 호출만 지원합니다. 구성 방법은 다음과 같습니다.
bean
id=
"simpleTrigger"class=
"org.springframework.scheduling.quartz.SimpleTriggerB 이안">
"org.springframework.scheduling.quartz.SchedulerFactoryBean" >
/>
listprop 어티
>bean>
설명: 이 매개변수는 이전에 구성된 트리거의 이름을 지정합니다. 5단계: 애플리케이션을 시작하고 프로젝트를 tomcat이나 다른 컨테이너에 배포하세요.
사실 Quartz의 구성이 상당히 복잡해 보인다는 것을 알 수 있습니다. Quartz는 사실 무거운 도구이기 때문에 단순히 몇 가지 간단한 예약된 작업만 실행하려는 경우 더 간단한 도구가 있습니까? ! 아래 Spring 작업에 대한 소개를 참조하세요.
Spring-Task첫 번째 방법: 구성 파일 방법첫 번째 단계: 다음과 같이 작업 클래스
즉, 일반 포조를 작성합니다.Java 코드
import org.springframework.stereotype.Service; @Service public void job1() { }
"http://www.springframework.org/schema/task"
"http://www.springframework.org/schema/task ">
작업:예약됨
ref=" job1"
cron=task:scheduled-tasks
>
import org.springframework.scheduling.annotation.Scheduled;
@Component("taskJob")
public
class TaskJob {"0 0 3 * * ?")
public void job1() {
System.out.println("작업 진행 중...") }
}
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:aop="http://www.springframework.org/schema/aop"
xmlns:context= "http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
"
default-lazy-init="false">
context:annotation-config />
>
context:comComponent-scan base-package="com.gy.mytask" />
>
task:주석 기반 scheduler="qbScheduler" mode="proxy"/>
task:scheduler id="qbScheduler" pool-size="10"/>
참고: 이론적으로는
물론 구성은 완료되었습니다. 물론 spring 작업에는 아직 많은 매개변수가 있으므로 자세한 내용은 xsd 문서를 참조하세요.
부록:
cronExpression 구성 지침, 특정 사용법 및 매개변수를 확인하세요. Baidu google
필드 허용되는 값 허용되는 특수 문자
초 0-59 , - * /
0 -5 9 , - * /
시간 0-23 , - * /
날짜 1-31 , - * ? / L W C
월 1-12 또는 JAN-DEC , - * /
평일 1-7 또는 SUN-SAT , - * ? / LC #
연도(선택 사항) 비워 두기, 1970-2099 , - * /
- 범위
* 와일드카드
? 해당 필드를 설정하고 싶지 않을 것입니다
다음은 몇 가지 예입니다.
CRON 표현식 의미
"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 * * ?" 트리거
"0 0/5 14 * * ?" 매일 오후 2시부터 오후 2시 55분까지 5분마다 트리거
"0 0/5 14,18 *** ?" 오후 2시~2시 55분과 오후 6시~6시 55분의 두 시간대에
"0 0-5 14 * * ?" 매일 14:00부터 14:05까지 매분 트리거 1개
"0 10,44 14 ? 3 WED" 3월 매주 수요일 14:10 및 14:44 트리거
"0 15 10 ? * MON-FRI" 매주 월요일, 화요일, 수요일 10:15에 트리거 , 목요일과 금요일
위 내용은 Spring 예약 작업에 대한 사용 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!