Rooted In Develop

간단한 스프링 스케줄러(Spring Scheduler) 사용하기 : @Scheduled Annotation 본문

Back End/Spring Boot

간단한 스프링 스케줄러(Spring Scheduler) 사용하기 : @Scheduled Annotation

RootedIn 2019. 8. 19. 23:29

Spring Quartz 없이 간단하게 스케줄러를 사용해보자.

 

1. @EnableScheduling

package me.rooted.mail;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
@SpringBootApplication
public class SpringMailThymeleafApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringMailThymeleafApplication.class, args);
	}

}

 

2. Job Class 생성

package me.rooted.mail.scheduler;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.mail.MessagingException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import me.rooted.mail.service.MailService;

@Component
public class MailJob {

	@Autowired
	MailService mailService;
	
	@Scheduled(cron = "0/20 * * * * ?")
	public void mailJob() throws MessagingException, IOException {
		
		Map<Object,Object> map = new HashMap<Object,Object>();
		
		map.put("anykey", "mailJob value");
        System.out.println("### SEND MAIL START ###");
		mailService.sendMail(map);
		System.out.println("#### SEND MAIL END ####");
	}
}

여기서 중요한 점은 @Scheduled(cron = "0/20 * * * * ?" 이다. 이것은 20초마다 해당 Job을 실행시키도록 한다.

Cron은 "초 분 시 일 월 요일 연도"로 이루어져있고, 주기적인 실행을 원한다면 0/{주기} 로 설정하면 된다. 

이상 Cron에 대한 부가적인 설명은 생략한다.

 

3. 프로젝트 우클릭 → Run As  Spring Boot App 클릭

 

4. 실행 결과

SEND MAIL START
SEND MAIL END

 

이렇게 간단한 스프링 스케줄러 세팅이 끝났다.

Comments