본문 바로가기

개발/BACK

[SpringFramework] 스케쥴러 (Scheduler) 간단한 예제

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