Today I Learned

스프링 스케쥴러 (@Scheduled) 설정 및 사용하기 본문

JAVA & Spring

스프링 스케쥴러 (@Scheduled) 설정 및 사용하기

하이라이터 2021. 2. 6. 03:45
728x90

일정 시간/주기마다 호출되어야하는 작업이 필요할때 스프링 스케쥴러를 사용하면 간편하게 구현할 수 있다.

 

스케쥴러를 사용하기 위해서는 간단한 설정이 필요하다.

설정은 어노테이션을 추가하거나, XML에 직접 명시할 수 있다.

 

1. Annotaion 설정

작업을 진행할 클래스에 다음 어노테이션을 추가한다.

@Configuration 어노테이션으로 해당 클래스가 Bean 구성 클래스임을 명시하고,

@EnableScheduling 어노테이션으로 클래스를 스케쥴링 목적으로 사용하겠다고 명시하면 된다.

 

TestScheduler.class

@Configuration
@EnableScheduling
public class TestScheduler{
    ...
}

2. XML 설정

task 네임스페이스를 추가하고, annotation-driven으로 @Schedule과 @Async 애노테이션을 활성화 시키면 된다.

...
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
    ...
    http://www.springframework.org/schema/task
    http://www.springframework.org/schema/task/spring-task.xsd"
    ...
<task:annotation-driven/>

 

다음은 dispatcher-servlet.xml(servlet-context.xml)에 위 XML 설정을 추가한 예제이다.


dispatcher-servlet.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:context="http://www.springframework.org/schema/context"
       xmlns:task="http://www.springframework.org/schema/task" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       	http://www.springframework.org/schema/beans/spring-beans.xsd
       	http://www.springframework.org/schema/context
       	https://www.springframework.org/schema/context/spring-context.xsd
       	http://www.springframework.org/schema/task
       	http://www.springframework.org/schema/task/spring-task.xsd">

    <context:component-scan base-package="highligher.cookie.controller" />

    <task:annotation-driven/>
</beans>

 

작업을 진행할 클래스에는 @Component 어노테이션을 추가한다.

 

TestScheduler.class

@Component
public class TestScheduler{
    ...
}

3. Scheduler

여기까지 되었으면 @Scheduled 어노테이션을 통해 스케쥴을 등록할 수 있다.

 

 

@Scheduled 활용을 위한 속성은 다음과 같다.

  1. Cron - cron 표현식을 통해 "초 분 시 일 월 주 (년)"으로 표현한다.

  2. fixedRate  - 이전 Task가 시작한 시점부터 설정한 (밀리세컨드 단위)시간만큼 대기한다.

  3. fixedDelay - 이전 Task가 끝난 시간부터 설정한 (밀리세컨드 단위)시간만큼 대기한다.  

위에서 생성한 클래스에 함수를 작성하고 @Scheduled 어노테이션과 필요한 속성만 붙이면 끝

    //@Scheduled(cron = "0 0 5 * * *")// 매일 5시에 동작
    //@Scheduled(fixedDelay=3600000) // 이전 task 종료 시간으로부터 한시간 후 마다 동작
    @Scheduled(fixedRate = 1000) // 이전 task 시작 시간으로부터 매 1초마다 동작
    public void testMethod(){
        System.out.println("test_shceduled");
    }

자세한 크론 표현식은 아래 링크 참고

https://highlighter9.tistory.com/34

 

크론(CRON ) 표현식

크론 표현식은 크론 스케쥴러의 정규 표현식이다. 7개의 필드로 구성되어있으며, 다음과 같은 형태로 사용된다.  * *  *  *  * * * 초  분  시  일 월  요일  년도(생략가능) 각 필드의 자세한 항

highlighter9.tistory.com

 

728x90

'JAVA & Spring' 카테고리의 다른 글

Feign 적용  (0) 2021.03.04
Lombok 어노테이션  (0) 2021.03.01
크론(CRON ) 표현식  (0) 2021.02.06
Comments