티스토리 뷰
* 일반적으로 전산실 환경에서 주기적인 디비 백업이나 메일 발송 기능은 유닉스 또는 리눅스 상에서의 cron을 이용하여 쉘 스크립트를 실행하는 형태로 구현한다. 현재 Spring Web MVC 3를 기반으로 개발 중인 사내 웹 애플리케이션에도 이런 형태의 스케줄 작업을 구현할 필요가 생겼는데 웹 애플리케이션 내부에서 구현해보자는 생각에 Spring 3 환경에서 Task Scheduler 메써드를 구현하는 방법을 조사해봤다.
* Spring 3에서는 어노테이션 기반으로 cron만큼 편리하고 직관적인 작업 스케줄러 기능을 지원한다.
* 적용할 Spring Web MVC 3 프로젝트가 XML 기반의 ApplicationContext로 구성되었다는 가정 하에 아래와 같이 task.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:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd">
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler" />
<task:executor id="taskExecutor" pool-size="1" />
<task:scheduler id="taskScheduler" />
</beans>
* DispatcherServlet 역할을 하는 XML 파일에 아래 내용을 추가한다.
<import resource="task.xml" />
* 작업 스케줄러 메써드를 구현하기 위한 모든 준비가 끝났다. 이제 구현할 메써드를 @Service 클래스에 작성하면 된다. 방법은 간단하다. 특정 주기로 실행될 메써드 앞에 @Scheduled 어노테이션을 작성하면 된다.
@Scheduled(cron = "* * 1 * * ?") // 매일 오전 1시에 실행한다.
public void doSomething() {
// doSomething
}
* 아래와 같이 다양한 주기 설정이 가능하다.
@Scheduled(fixedDelay = 3600000) // 1000 * 60 * 60, 즉 1시간마다 실행한다.
<참고자료>
Scheduled Jobs in Spring 3 (by Matt Young)
http://www.vodori.com/blog/spring3scheduler.html
Spring Framework 3.2 Reference Documentation: 27. Task Execution and Scheduling
http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/scheduling.html
- Total
- Today
- Yesterday
- MySQL
- 태그를 입력해 주세요.
- DynamoDB
- bootstrap
- Kendo UI Web Grid
- Spring Boot
- maven
- 로드바이크
- chrome
- 평속
- jstl
- jpa
- node.js
- 구동계
- JHipster
- jsp
- Tomcat
- Kendo UI
- graylog
- spring
- JavaScript
- Eclipse
- Spring MVC 3
- Docker
- 로드 바이크
- kotlin
- java
- 자전거
- CentOS
- 알뜰폰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |