728x90
반응형
1. 주기적인 작업을 수행할 클래스 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/*JobSendMail.java*/
public class JobSendMail { private Logger log = LogManager.getLogger(this.getClass());
@Resource(name = "Batch")
private Batch batch;
public void doBatchLoad() throws JobExecutionException {
SimpleDateFormat df;
df = new SimpleDateFormat("yyyy-MM-dd");
String nowDay = df.format(new Date(System.currentTimeMillis()));
Calendar week = Calendar.getInstance();
week.add(Calendar.DATE , -7);
String beforeDay = df.format(week.getTime());
try {
batch.sendMail(beforeDay, nowDay);
} catch (NullPointerException e) {
log.debug("NullPointerException");
} catch (Exception e) {
log.debug("Exception");
};
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/*JobSendMailBean.java*/
package com.utility.bat; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
public class JobSendMailBean extends QuartzJobBean {
private JobSendMail dummyTask;
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
dummyTask.doBatchLoad();
}
public void setDummyTask(JobSendMail dummyTask) {
this.dummyTask = dummyTask;
}
}
|
cs |
2. @Scheduled 설정을 사용하기 위한 XML 설정
<?xml version="1.0" encoding="UTF-8"?>
<beans
default-lazy-init="true"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="dummyTask14" class="com.utility.bat.JobSendMail"/>
<bean name="dummyJob14" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
p:jobClass="com.utility.bat.JobSendMailBean">
<property name="jobDataAsMap">
<map>
<entry key="dummyTask" value-ref="dummyTask14"/>
</map>
</property>
</bean>
<bean id="cronTrigger14" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:jobDetail-ref="dummyJob14"
p:startDelay="1000"
p:cronExpression="0 0 9 ? * MON"/>
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger14"/>
</list>
</property>
</bean>
</beans>
Cron Expression(크론 표현식)
크론 표현식은 스케줄을 나타내기 위한 공백으로 나누어진 6개 또는 7개의 필드로 구성된 문자열이다. (연도 표시는 옵션이다.)
<seconds> <minutes> <hours> <days of month> <months> <days of week> <years>
각각의 필드에 입력할 수 있는 허용된 값들은 다음과 같다.
표 끝의 특수문자의 의미
, : 여러 값을 추가할 때 사용한다. ex) MON, WED, FRI
- : 값의 범위를 정할 때 사용한다. ex) 10-12
* : 필드의 모든 값을 선택할 때 사용한다.
/ : 값의 증가를 설정할 때 사용한다. 예를 들어 seconds 필드에서 0부터 14씩 증가하는 값(0, 14, 28, 42)들을 선택할 수 있다. ex)0/14
? : 설정값 없음을 나타낸다.
L : Last의 약어로 지정 범위의 마지막 값을 표시한다. ex)5L -> 마지막 금요일
W : Weekday의 약어로 <days of month> 필드에서 주어진 날짜에서 가장 가까운 평일을 선택할 때 사용한다.
# : N번 째 특정 요일을 설정할 때 사용한다. ex)5#2 -> 이 달의 두번째 목요일
반응형