티스토리 뷰
구글차트로 방문자수를 일주일 단위로 집계하려고 하다 보니 매주 월요일 0시가 되면 방문자수가 카운트되는 DB가 초기화가 되게 해야되서 스케쥴러를 찾다가 쿼츠 스케쥴러를 찾았다.
(사실 스프링에 @scheduled 라는 스케쥴러를 지원하는 어노테이션이 있지만 나중에야 알았다....-_-)
1. Maven에 의존 라이브러리 주입(pom.xml)
그룹아이디 : org.quartz-scheduler
아티팩트아이디 : quartz
2. QuartzJobBean추상클래스를 상속받아 executeInternal()메서드를 오버라이딩 하는 클래스를 작성한다. 이 메서드에 스케쥴러가 돌아가는 시점에 수행 할 코드(작업)를 정의한다.
BoardService라는 객체는 sql을 수행하는 dao단을 호출하는 비즈니스 로직 클래스이다.(스프링 설정정보가 있는 xml에 bean으로 정의되어 있음)
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 |
package com.choon.framework;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.choon.service.BoardService;
public class QuartzBean extends QuartzJobBean{
private BoardService boardService;
@Autowired
public void setBoardService(BoardService boardService) {
this.boardService = boardService;
}
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
this.boardService.updateVisitCountInit();
}
}
|
3. 스프링 xml설정을 한다.
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 |
<!-- 1.대상이 되는 클래스 정의 -->
<bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.choon.framework.QuartzBean"/>
<property name="jobDataAsMap">
<map>
<entry key="boardService" value-ref="boardService"></entry>
<!-- 쿼츠 클래스에서 db사용을 위한 객체전달 -->
</map>
</property>
</bean>
<!-- 2. Cron 시간 설정 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetailBean"/>
<!-- <property name="cronExpression" value="*/10 * * * * ?" /> -->
<property name="cronExpression" value="0 59 23 ? * SUN" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean> |
간단한 것 같지만 이틀동안 헤멧다....이제 잊어먹지 말아야지..
'SPRING > 정리' 카테고리의 다른 글
[spring]에서 sitemesh설정 (레이아웃 템플릿) (0) | 2014.05.17 |
---|---|
[네이버 지도 javascript map]Jdom을 이용한 스프링프레임워크 환경에서 xml 파싱하기 (2) | 2014.04.16 |
jsonView 빈 객체 사용시 ajax 한글처리 (0) | 2014.01.24 |
컨트롤러 빈객체를 적용하지 않아도 자동 매핑 (0) | 2014.01.03 |
스프링에서 log4j 설정으로 어플리케이션 실행시 콘솔창에 쿼리보여주기 (0) | 2013.12.18 |
Comments