본문 바로가기
개발/egovframework

[전자정부프레임워크] Spring quartz 스케줄러 사용법

by 아크투어 2023. 3. 30.
반응형

1. 개요

 

Documentation

 

www.quartz-scheduler.org

 

2. 개념

  • Spring Quartz는 오픈소스로 스케줄링 라이브러리 이다.
  • Quartz 스케쥴러 실행과 관계된 주요 요소는 Scheduler, Job, JobDetail, Trigger 가 있다.
  • Scheduler 는 Quartz 실행 환경을 관리하는 핵심 개체이다.
  • Job 은 사용자가 수행할 작업을 정의하는 인터페이스로서 Trigger 개체를 이용하여 스케쥴할 수 있다.
  • JobDetail 는 작업명과 작업그룹과 같은 수행할 Job에 대한 상세 정보를 정의하는 개체이다.
  • Trigger 는 정의한 Job 개체의 실행 스케쥴을 정의하는 개체로서 Scheduler 개체에게 Job 수행시점을 알려주는 개체이다.

spring quartz

 

3. Spring 과 Quartz 통합

  • pom.xml
  • 전자정부프레임워크의 pom.xml 쿼츠는 기본적으로 탑재되어있다.
# pom.xml

<dependency>
	<groupId>org.quartz-scheduler</groupId>
	<artifactId>quartz</artifactId>
	<version>2.3.2</version>
	<exclusions>
		<exclusion>
			<artifactId>slf4j-api</artifactId>
			<groupId>org.slf4j</groupId>
		</exclusion>
	</exclusions>
</dependency>

 

  • context-scheduler.xml 생성
  • 시간단위 정보는 아래와 같다.
  • 24시간: 86400000, 12시간 : 43200000, 1시간 : 3600000, 10분: 600000, 1분 : 60000, 10초 : 10000
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<!-- 24시간: 86400000, 12시간 : 43200000, 1시간 : 3600000, 10분: 600000, 1분 : 60000, 10초 : 10000 -->
	
	<bean id="schedulerTestId"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="triggerScheduling" />
		<property name="targetMethod" value="schedulerTest" />
		<property name="concurrent" value="false" />
	</bean>
	
	<bean id="schedulerTestTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
		<property name="jobDetail" ref="schedulerTestId" />
		<property name="startDelay" value="1000" /> <!-- 1초후에 실행 -->
		<property name="repeatInterval" value="10000" /> <!-- 매 1분마다 실행 -->
	</bean>
	
	<bean id="schedulerTestScheduler"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="schedulerTestTrigger" />				
			</list>
		</property>
	</bean>
	
</beans>

 

  • TriggerScheduling.java 파일을 만든다.
import org.springframework.stereotype.Service;

@Service("triggerScheduling")
public class TriggerScheduling {

	public void schedulerTest() throws Exception {
		System.out.println("스케쥴러 테스트");
	}
}

 

 

4. 테스트

  • 시작과 동시에 1회 실행되고 이후 10초마다 갱신된다.

쿼츠 실행 테스트

 

반응형