개발/Spring

[Spring] Spring 2.5 버전에서 Spring Scheduler 사용하기

hojak99 2017. 9. 7. 18:00

우선 화석 수준인 Spring 2.5 버전이다. 


처음에 테스트 해본다고 Spring 4.0 버전에서 했을 땐 어노테이션 이용해서 구현을 했는데 Spring 2.5 인 작업 프로젝트에서는 어노테이션을 쓰지 못했다. 


스키마를 추가해줘도 찾지 못한다고 오류가 발생해서 키보들 뿌실 뻔했다.




우선 quartz 라는 라이브러리를 다운받아야 한다.


우선 다운 받으면 다음과 같은 .jar 파일을 볼 수 있을 것이다.


1. c3p0-0.9.1.1.jar

2. log4j-1.2.16.jar

3. quartz-2.2.3.jar

4. quartz-jobs-2.2.3.jar

5. slf4j-api-1.7.7.jar

6. slf4j-log4j12-1.7.7.jar



아 그리고 우리는 스프링 버전이 매우 낮기 때문에 다운받은 .jar 파일들을 사용하면 오류가 발생한다. 그렇기 때문에 quartz-2.2.3.jar 버전은 1.8.6 버전으로 사용해야 한다.



6개의 .jar 파일들을 프로젝트에 추가시켜주자. 근데 생각해보니 왜 maven 을 사용하지 않을까란 생각을 할 수 있는데 내가 맡은 프로젝트에는 maven 기반이 아니다 ㅎㅎ 디지겠다.


서버가 돌아갈 때 같이 실행시킬 클래스를 하나 만들자. 난 CronTest 라고 클래스를 생성해주었다.


package kr.co.iquest.lhotse;

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class CronTest extends QuartzJobBean {

	@Override
	protected void executeInternal(JobExecutionContext arg0)
			throws JobExecutionException {

		System.err.println(new Date());
	}
	
}


나는 빨간색 글씨가 내 눈에 잘 띄기 때문에 err 로 했다. 로그가 엄청 많이 콘솔에 출력이 되고 있어서 찾을 수가 없다.


이걸 본 사람들은 이제 삽질을 하지 않아도 된다.


bean 설정 파일로 뭐 이름을 ~-context.xml 라고 해놓았을테니 거기다가 bean 생성을 해주자.



<bean id="cronTest" class="org.springframework.scheduling.quartz.JobDetailBean">
	<property name="jobClass" value="kr.co.iquest.lhotse.CronTest"></property>
</bean>
	
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
	<property name="jobDetail" ref="cronTest"></property>
	<property name="cronExpression" value="0/5 * * * * ?"></property>
</bean>
	
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="triggers">
		<list>
			<ref bean="cronTrigger"/>
		</list>
	</property>
</bean>


다 됐다. xml 해석 정도는 할 수 있으리 믿는다. 주입시켰다.


여기서 cronExpression 에 0/5 * * * * ? 라고 해놓았는데 5초마다 실행된다는 뜻이다. 알아서 찾아서 사용하자.


그리고 마지막 SchedulerFactoryBean 클래스로 등록된 Bean 에 <list> 안에 <ref bean="cronTrigger"> 을 볼 수 있다.


나는 모르고 여기를 cronTest 라고 해서 오류가 터졌는데 헤매다가 보니 난 멍청했다. 제발 멍청한 짓은 안 했으면 좋겠다. 




이제 톰캣 실행을 하면

[사진 1: 스케줄러 작동]



끝~



반응형