출처 : http://shonm.tistory.com/entry/Spring-%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%9F%AC-Quartz
스프링은 크론과 같은 스케쥴러를 제공 한다.
일단
1. 스케쥴러로 작동될 클래스를 작성한다.
package com.login.service;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.dto.User;
import com.login.dao.LoginDAO;
public class QuartzService extends QuartzJobBean{
//QuartzJobBean 을 상속 받아야 한다.
LoginDAO loginDAO;
public void setLoginDAO(LoginDAO loginDAO) {
this.loginDAO = loginDAO;
}
protected void executeInternal(JobExecutionContext jobExecutionContext)
throws JobExecutionException {
// 이 메소드가 있는 부분이 실행될 부분이다.
// 반복할 작업 구현
User user = new User();
user.setId("shonm");
User confirmUser = loginDAO.selectUser(user);
System.out.println(confirmUser.getId()+"님 "+"비밀번호 "+confirmUser.getPw());
}
}
2. 작성된 클래스를 xml에 설정하고 Quartz 설정을 해준다.
applicationContext-Quartz.xml
<?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:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="UserJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<!-- 실행시킬 클래스 -->
<property name="jobClass" value="com.login.service.QuartzService"/>
<property name="jobDataAsMap">
<map>
<entry key="loginDAO">
<ref bean="loginDao"/><!-- 실행시킬 클래스의 DI -->
</entry>
</map>
</property>
</bean>
<!--
SimpleTriggerBean 과 CronTriggerBean 두가지를 쓸수 있는데 앞의 것은
몇분마다 실행 뭐 이럴 때 스는 것이고...
cronExpression은 매년 3월 2일 아니면 매일 새벽 1시 마다 실행등을 할 때 쓰인다.
SimpleTriggerBean 은 주기를 설정하는 property 로 repeatInterval 를 갖고
CronTriggerBean 은 주기를 설정하는 property 로 cronExpression 을 사용한다.
-->
<bean id="UserTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- bean id="UserTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">-->
<property name="jobDetail" ref="UserJob"/>
<!-- property name="cronExpression" value="0 0 1 * * ?"/>-->
<!-- 초,분,시,일,월,주의 일,년 -->
<!-- 매일 오전 1시에 실행됨 -->
<!-- value는 1000 이 1초 -->
<property name="repeatInterval" value="10000"></property>
</bean>
<!-- trigger 를 장착하고 실행시킨다.-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="triggers">
<list>
<ref bean="UserTrigger"/>
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">5</prop>
<prop key="org.quartz.threadPool.threadPriority">4</prop>
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>
</bean>
</beans>
'spring' 카테고리의 다른 글
[Spring] @pathVariable 배열 형태 받기 (0) | 2013.04.29 |
---|---|
[Spring] Log4J 설정 (0) | 2013.04.04 |