728x90
스케쥴러
백엔드 서버를 구현할 때, 스케쥴러를 구현하는 일은 특별하지 않다
어느 프로젝트이든 스케쥴러를 구현할 일이 꼭 있기 때문이다
스케쥴러는 간단히 말해서, 어느 특정 시간을 설정해 놓으면, 설정해 놓은 메소드를 서버에서 실행시켜주는 스프링 프레임워크 기능이다
스프링 3.1 버전 이상부터 지원한다
1
bean 설정 파일 수정
(servlet-context.xml or root-context.xml 수정)
프로젝트 bean 설정 파일을 열면 beans 태그가 보인다
해당 태그 속성에 [추가] 라는 글자 안에 있는 태그들은 모두 추가해주자
스프링에서 지원해주는 스케쥴러를 사용하기 위함이다
<?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:util="http://www.springframework.org/schema/util" [< 추가]
[추가 >] xmlns:task="http://www.springframework.org/schema/task" [ < 추가]
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
[추가 >] http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd [ < 추가]
[추가 >] http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"> [ < 추가]
[추가] <bean id="schedulerService" class="main.schedule.SchedulerService" />
<task:scheduler id="gsScheduler" pool-size="10" />
<task:executor id="gsTaskExecutor" pool-size="10" />
<task:annotation-driven executor="gsTaskExecutor"
scheduler="gsScheduler" />
|
cs |
아래에 bean 태그 안의 속성 중, class 값은 후에 만들 스케쥴러 클래스 파일의 이름이다
아래의 경로에 동일하게 해당 이름으로 된 파일을 생성하자
main 패키지안의 schedule 패키지를 생성한다
이 후, class 파일인 SchedulerService.java 파일을 생성하자
2
SchedulerService.java 작성
아래에 @Scheduled 어노테이션을 보면 cron 이라고 적혀있는데,
유닉스 계열의 잡 스케쥴러에서 시간단위를 표현할 때, 사용하는 표현식이다
해당 표현식을 크론표현식이라고 한다
아래의 크론 표현식은 5초마다 스케쥴러가 진행되도록 설정해놓은 표현식이다
크론 표현식에 대해선 조만간 포스팅 할 예정이다
package main.schedule;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class SchedulerService {
@Scheduled(cron="*/5 * * * * *")
public void scheduleRun(){
System.out.println("5초마다 실행");
}
}
|
cs |
3
결과
주로 푸시 발송이나 해당 결과를 DB에 저장하는 등의 반복적이고 순차적인 업무를 진행할 때
자주 사용하게 되었다
다음 포스팅은 cron 표현식이 될 것 같다
728x90