팀 프로젝트에서 사용시간이 지난 예약 내역에 대해 사용완료 처리를 해야 할 필요성이 있었습니다.
그 방법으로 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
'Java' 카테고리의 다른 글
자바의 정렬 Arrays.sort() (2) | 2022.09.14 |
---|---|
Bootstrap5 modal 버튼없이 다루기 (0) | 2022.08.02 |
JSTL foreach 한 리스트에서 객체 두 개씩 뽑아 사용하기 (0) | 2022.07.20 |
네이버 로그인 API 구현 java/spring (1) | 2022.07.11 |
spring DI, AOP (0) | 2022.06.14 |