목차
0. 환경
- windows10
- openjdk version "1.8.0_242"
- STS4 TooL (이클립스)
- Spring Framework 4.3.8 released
- Spring MVC Project (Legacy Project)
1. maven 추가 (pom.xml)
- quartz
- spring-context-support
<!-- quartz 라이브러러리 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
<!-- 스프링 Quartz 도우미 라이브러리 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
2. 서비스 생성
Spring Quartz를 이용해 주기적으로 실행할 서비스를 생성합니다.
[인터페이스]
package com.test.quartz;
public interface TestQuartzService {
void testMethod();
}
[구현 클래스]
@Service("testQuartzJob") 어노테이션을 꼭 작성해줍니다.
package com.test.quartz;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.test.service.TestService;
@Service("testQuartzJob")
public class TestQuartzServiceImpl implements TestQuartzService{
private static final Logger logger = LoggerFactory.getLogger(TestQuartzService.class);
@Override
public void testMethod() {
logger.info("test");
}
}
3. 스케쥴러 등록
- root-context.xml에 Job, Trigger, Scheduler를 등록합니다.
- Cron Expression을 이용해 다양하게 실행 시간을 설정할 수 있습니다.
<!-- Spring Quartz Start -->
<!-- Job -->
<bean id="testJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 서비스 구현 객체의 빈 이름을 인자로 줍니다. -->
<property name="targetObject" ref="testQuartzJob" />
<!-- 서비스 객체에서 주기적으로 실행될 메소드를 지정합니다. -->
<property name="targetMethod" value="testMethod" />
<!-- 동시 실행을 방지합니다. -->
<property name="concurrent" value="false" />
</bean>
<!-- Trigger -->
<bean id="testJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="testJob" />
<!-- Trigger를 사용하여 1초 간격으로 실행되도록 지정했습니다. -->
<property name="cronExpression" value="0/1 * * * * ?" />
</bean>
<!-- Scheduler -->
<bean id="testJobScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<!-- 앞에서 설정한 트리거를 등록합니다. 필요하면 여러개 만들어서 등록하면 됩니다. -->
<list><ref bean="testJobTrigger" /></list>
</property>
</bean>
<!-- Spring Quartz End -->
4. 컴포넌트 스캔
만약 새로 패키지를 생성했다면 root-context.xml에 컴포넌트 스캔 설정을 해줍니다.
<context:component-scan base-package="com.test.quartz" />
5. 실행결과
'Backend > Spring' 카테고리의 다른 글
[Spring Boot] 프로젝트 생성 (start.spring.io) (0) | 2021.11.15 |
---|---|
[Spring] Spring MVC Project DB 연결 정보 암호화 (Jasypt, properties) (0) | 2021.10.31 |
[Spring] Spring MVC Project Mysql 로그 출력 (log4jdbc) (0) | 2021.10.29 |
[Spring] Spring MVC Project logback 적용 (0) | 2021.10.28 |
[Spring] Spring MVC Project Mysql 연동하기 (mysql mybatis hikariCP) (0) | 2021.10.27 |