본문 바로가기
Spring

Scheduler 처리

by invelog 2023. 10. 26.
반응형

일정시간마다 DB를 조회해서 카카오톡 알림을 줘야하는 경우

어떻게 처리를 해야하나 찾아보다가 Scheduler로 처리하면 되겠다 싶었다. 

 

생각보다 처리는 간단했다. 

제일 먼저 bean에 xmls와 schema를 추가해줘야한다. 

각각의 프로젝트에 따라 이 설정을 해준곳이  context인 경우도 있고 dispatcher-servlet인 경우도 있으니 이는 상황에 따라 넣어주면 될것 같다. 

 

/* Scheduler를 사용하기 위한 xmls */
xmlns:task="http://www.springframework.org/schema/task"

/* schema */
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd

 

를 추가해 주고 dispatcher-servlet에 몇몇 설정을 해주면 된다. 

<!-- Scheduler 파일이 존재하는 Package 설정 -->
<context:component-scan base-package="파일이 존재하는 패키지 경로" />
	<!-- Schedule을 설정할 때 Cron을 사용하기 위해 필요한 Tag -->
	<task:scheduler id="jobScheduler" pool-size="10" />
    	<task:annotation-driven scheduler="jobScheduler" />

 

이렇게 설정한 뒤에는 위 코드에서 base-pakage 경로에 Scheduler 클래스를 만들어주면 된다. 

 

public class Scheduler {
	@Scheduled(cron = "초 분 시 일 월 요일")
    	public void schedulerMethod() {
    	
    	}
}

 

여기서 주의할 점은 Scheduler로 수행되는 Method는 파라미터를 받을 수 없다. 

그 점만 주의하고 위 메서드 안에서 일정시간에 수행시키고 싶은 로직들을 넣으면 된다. 

반응형