Spring에서 Quartz를 사용하여 작업 스케줄링
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
각 도메인에 나타날 수 있는 문자는 다음과 같습니다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.