728x90

팀 프로젝트에서 사용시간이 지난 예약 내역에 대해 사용완료 처리를 해야 할 필요성이 있었습니다.

그 방법으로 spring @scheduled 어노테이션을 찾았습니다.

 

Maven 프로젝트이고 Java 17.0.2/ sts 3.9.18 버전을 사용중입니다.

 

@scheduled 어노테이션을 사용하기 위해서는 몇 가지 사전작업이 필요합니다.

spring < appServlet < servlet-context.xml에 하단의 빨간 줄로 표시한 것을 추가해주세요

xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task https://www.springframework.org/schema/task/spring-task.xsd"

 

그리고 Bean 등록이 필요한데 저는 service 패키지 하위에 Scheduler 클래스를 생성했습니다.

이걸 고려하면서 Scheduler Bean등록을 해주세요. Bean 등록도 servlet-context.xml에 해주시면 됩니다.

잘 모르겠다 하시는 분들은 최하단의 공식 가이드를 봐주세요.

 

클래스에 @Component, 사용하실 메서드에 @Scheduled 어노테이션을 잊지 마세요.

@Scheduled 뒤 옵션에는 여러 가지가 있지만 제가 사용한 건 cron 옵션입니다.

@Scheduled(cron = "0 0 0-23 * * *")
	public void autoUpdate() {
		bookService.updateSuccess();
	}

cron 뒤에 오는 *가 각각 의미하는 것은 아래와 같습니다. 미리 예시로 주는 표현법도 있습니다.

제가 설정한 것은 0시부터 23시까지 매시 정각에 실행될 수 있도록 설정했습니다.

 

더 많은 옵션 정보가 필요하시면 아래 링크를 봐주세요.

https://docs.spring.io/spring-framework/docs/current/reference/html/integration.html#scheduling

 

설정은 끝났습니다.

메서드 안에 있는 bookService.updateSuccess(); 코드는 제가 매시각 실행할 서비스 로직이라 중요하지 않습니다.

 

 

 

 

https://spring.io/guides/gs/scheduling-tasks/#initial

 

Scheduling Tasks

this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team

spring.io

 

728x90

+ Recent posts