스프링에서 Scheduler 사용하기

1

Spring

목록 보기
12/12

간혹 개발하다가 일정 주기별로 메서드를 실행시켜주고 싶을 때가 있다.
나 또한 Open API를 일정 주기마다 받아와야하는 상황이 있었다. Spring에서 지원해주는 Scheduler를 사용해서 일정 주기마다 메서드를 실행시켜보자.


Dependency 추가하기

Scheduler는 기본적으로 org.springframework.scheduling 패키지에 있으므로 gradle 기준 다음과 같이 의존성을 추가하면 된다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

maven의 경우 다음과 같다.

<dependency> 
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

스케줄링 활성화

스케줄링 기능을 활성화하기 위해서 다음과 같이 configuration 클래스 혹은 지금처럼 애플리케이션 메인 클래스@EnableScheduling를 추가한다.

@EnableScheduling
@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

컴포넌트 등록

@Component
public class ScheduledTasks {

}

기본적으로 @Component를 사용해서 컴포넌트로 등록해도 되지만, @Component를 내장하고 있는 @Service와 같은 어노테이션들로도 등록이 가능하다.


크론 문법으로 반복 주기 지정하기

스케쥴러를 이용하기 위해서는 여러가지 방법들이 있지만, 난 그중에서 보기쉽고 직관적인 @Scheduled + cron 문법을 사용해서 지정해 보겠다.

스케줄러가 적용된 메서드의 반환타입은 void여야 합니다.

@Scheduled(cron = "0 0 0 * * *")
public void ScheduledTasksMethod() {
    log.info("{}에 실행되었습니다.", formatter.format(LocalDateTime.now()));
}

참고로 위에서 사용한 0 0 0 * * *매일 자정이라는 뜻입니다.

출처


이렇게 스케줄러를 사용해서 일정 주기마다 실행되는 메서드를 만들어 보았다. 크론 문법은 아직 미숙하기 때문에 더 파봐야겠다..

0개의 댓글