Spring에서 Quartz를 사용하여 작업 스케줄링

6766 단어 SpringQuartz
선언: Spring에서 Quartz를 사용하는 방법은 두 가지가 있는데 하나는 특정한 기류를 계승하는 것이다: org.springframework.scheduling.quartz.QuartzJobBean, 다른 하나는 필요 없습니다.다음은 각각 소개합니다.
1. 작업류 계승 org.springframework.scheduling.quartz.QuartzJobBean
1단계: 작업 클래스 정의
java 코드

import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class Job1 extends QuartzJobBean{
  
  // xml 
  private int timeout;
  
  public void setTimeout(int timeout) {
    this.timeout = timeout;
  }

  @Override
  protected void executeInternal(JobExecutionContext content) throws JobExecutionException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(sdf.format(new Date()) + "job1 " + " xml timeout " + timeout);
  }
}

2단계 spring에서 JobDetailBean 구성
spring.xml 구성 코드

<bean id = "job1" class="org.springframework.scheduling.quartz.JobDetailBean">
   <!--   -->
   <property name="jobClass" value="com.ccg.job.Job1" />
   <property name="jobDataAsMap">
     <map>
       <!--   --> 
       <entry key="timeout" value="10"></entry>
     </map>
   </property>
 </bean>
3단계 트리거 설정
Quartz의 작업 트리거는 두 가지가 있는데, 각각
org.springframework.scheduling.quartz.SimpleTriggerBean , 일정 주파수에 따라 작업 수행
org.springframework.scheduling.quartz.CronTriggerBean,cron 표현식을 지원하여 시간을 지정하거나 주파수에 따라 실행할 수 있습니다
첫 번째 Simple TriggerBean, 예를 들어 2초에 한 번씩 실행하면 xml 설정은 다음과 같다.

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
   <property name="jobDetail" ref="job1" /> 
   <property name="startDelay" value="10000" /><!-- , 10 -->
   <property name="repeatInterval" value="2000" /><!-- 2 -->
 </bean>
두 번째 CronTriggerBean은 매일 12시에 실행되며 xml 구성은 다음과 같습니다.

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
   <property name="jobDetail" ref="job1" />
   <property name="cronExpression" value="0 0 12 * * ?" /> <!--  12  -->
 </bean>
Cron 표현식 형식의 맨 뒤에 설명되어 있습니다.
4 단계 스케줄링 공장 배치
spring.xml 구성 코드는 다음과 같습니다.

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
    <list>
    <ref bean="simpleTrigger"/>
  <!-- <ref bean="cronTrigger"/> -->
    </list>
  </property>
</bean>
다섯 번째 단계는 응용 프로그램을 시작하여 작업 스케줄링 실행 상황을 확인합니다.
2. 작업 클래스는 계승할 필요가 없고 일반적인 자바 클래스일 뿐이다
주요 클래스는 org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 코드입니다.
첫 번째 작업 클래스

import java.text.SimpleDateFormat;
import java.util.Date;

public class Job2 {
  
  public void run(){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    System.out.println(sdf.format(new Date()) + " job2 ");
  }
}

두 번째 단계는 스프링입니다.xml에서 설정job2

<bean id = "job2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" >
  <bean class="com.ccg.job.Job2" />
  </property>
  <property name="targetMethod" value="run"></property>
  <property name="concurrent" value="false" /><!--   --> 
</bean>
targetObject 실행 작업 클래스 targetMethod는 작업 클래스에서 실행할 방법을 가리킨다
세 번째 단계는 트리거 방식을 설정합니다. 마찬가지로 두 가지가 있습니다. 하나는 Simple TrggerBean이고 하나는 Cron TrggerBean입니다.
첫 번째 설정 xml은 다음과 같습니다. (2초마다 실행)

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
   <property name="jobDetail" ref="job2" /> 
   <property name="startDelay" value="10000" />
   <property name="repeatInterval" value="2000" />
 </bean>
두 번째 설정 xml은 다음과 같습니다. (매일 12시에 실행)

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
   <property name="jobDetail" ref="job2" /> 
   <property name="cronExpression" value="0 0 12 * * ?" /> 
 </bean>
4 단계 스케줄링 공장 배치

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
    <list>
      <ref bean="simpleTrigger"/>
    </list>
  </property>
</bean>
Cron Trigger Bean을 사용하려면 simple Trigger를 simple Trigger로 바꿔야 돼요.
마지막으로 서비스를 시작하여 작업 스케줄링 실행 상황을 보십시오.
첨부: Cron 표현식
Cron 표현식은 문자열로 문자열은 5 또는 6개의 공백으로 구분되며 6 또는 7개의 도메인으로 구분되며 각 도메인은 다음 두 가지 구문 형식을 갖습니다.

Seconds Minutes Hours DayofMonth Month DayofWeek Year//  
Seconds Minutes Hours DayofMonth Month DayofWeek
각 도메인에 나타날 수 있는 문자는 다음과 같습니다.
  • Seconds: ",-*/"네 글자, 유효 범위 0-59 정수
  • Minutes: 유효한 범위가 0-59인 정수
  • Hours: ",-*/"네 글자, 유효 범위 0-23의 정수
  • DayofMonth: 유효한 범위가 0-31인 정수
  • - ",*/?L W C"8자가 나타날 수 있습니다.
  • Month: 유효 범위가 1-12인 정수 또는 JAN-DEc
  • DayofWeek: 1-7의 정수 또는 SUN-SAT 두 개 범위에서 유효한 ",-*/?L C#"네 글자가 나타날 수 있습니다.1은 일요일, 2는 월요일, 순서대로 유추
  • Year: 1970-20099년
  • 이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

    좋은 웹페이지 즐겨찾기