[Spring] 스케줄러(1) - Scheduled

handa·2022년 11월 3일
0

스프링한다

목록 보기
1/1
post-thumbnail

보통 DB작업을 일정시간마다 체크하거나 불러오는 등 주기적으로 하는 작업을 등록할때
스프링 스케줄러(Spring scheduler)를 사용하면 간편하게 구현할 수 있다고 한다.

나는 매일마다 주기적으로 데이터를 체크해
update해야하는 작업을 위해 스프링 스케줄러를 사용했다.
아주 굳!

1. Dispatcher-Servlet.xml 파일에 설정추가

xml 파일을 설정하지 않고 해봤는데 어노테이션은 있었는데 동작은 안하더라,,,
왜지,,, 나중에 Dispatcher Servlet도 정리를 해봐야겠다.

먼저 xml 파일의 bean 태그에 task를 추가해줘야한다.

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

2. @Scheduled

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class Scheduler {
	
	@Scheduled(fixedDelay = 1000)
	public void firstTask() {
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		Date now = new Date();
		String strDate = sdf.format(now);
		System.out.println("현재시간: " + strDate);
	}
}

현재시간: 2022-11-03 14:50:46.405
현재시간: 2022-11-03 14:50:47.420
현재시간: 2022-11-03 14:50:48.423
현재시간: 2022-11-03 14:50:49.436
현재시간: 2022-11-03 14:50:50.438

@Scheduled를 사용하여 사용주기에 맞는 옵션을 선택하여 사용한다.
fixedDelay 옵션은 이전 작업이 끝난 시점부터 x밀리초 이후마다 작업이 실행된다.
fixedRate 옵션은 이전 작업이 수행되기 시작한 시점부터 x밀리초 이후마다 작업이 실행된다.

Cron Expression(크론 표현식)

크론 표현식은 스케줄을 나타내기 위한 공백으로 나누어진 6개 또는 7개의 필드로 구성된 문자열이다. (연도 표시는 옵션)
난 요놈으로 구현해놓았다.

<seconds><minutes><hours><days of month><months><days of week><years>

cron 탭에 사용하는 표현식

처음에는 기존에 있는 함수 위에다가 @Scheduled를 넣어 쓰려고 했는데
내가 사용하려고 하는 곳엔 update 해야하는 날짜를 form에서 들고와야 하는 문제와 여러 파일에서
@Scheduled를 사용하면 수정할 때 이곳 저곳 파일을 뒤져야하는 문제가 있다고 생각하여
스케쥴러로만 사용가능한 클래스를 생성하여 사용했다.
(걍 내생각)

profile
진짜 해보자

0개의 댓글