Spring 에는 주기적인 일을 처리할 수 있도록 스케줄 관련 기능이 포함되어있다.
먼저 스케줄 작업을 처리하기 위해 src/config 패키지 하위에 ScheduleConfiguration 클래스를 작성하자.
그다음에 다음과 같이 작성 하자.
@EnableScheduling 어노테이션을 선언함으로써, Spring은 스케줄 관련 기능을 지원하며 스케줄링 관련 어노테이션을 활성화한다.
프로젝트의 메인 클래스인 DemoApplication 클래스에서 @EnableScheduling 어노테이션을 선언하여, 스케줄링 기능을 활성화할 수 있지만, 나는 설정 파일들은 모두 따로 config 패키지 하위에 클래스로 생성하여 관리한다. 이 방법이 좀 더 직관적인 것 같다.
그다음 반복되는 스케줄 작업을 선언하기 위해 task 패키지를 만들고 하위에 수행 작업에 따른 클래스를 컴포넌트로 선언한다. 나는 다음과 같이 task 패키지 하위에 LogTask라는 클래스를 만들었다.
주기적으로 어떠한 작업을 처리하기 위해서는 해당 작업을 담당하는 메서드에 @Scheduled 어노테이션을 붙여야 한다.
@Scheduled 어노테이션을 선언하고, 그 파라미터를 보면 cron, fixedDelay, fixedDelayString 등 스케줄 작업을 예약하기 위한 여러 파라미터들이 존재함을 알 수 있다.
나는 1초 간격으로 로그를 찍기 위해 다음과 같이 @Scheduled(fixedDelay=1000) 어노테이션을 메서드에 선언하였다.
이후 프로젝트를 실행시키면 다음과 같이 성공적으로 1초마다 스케줄 작업이 실행되어 로그가 출력되는 것을 확인할 수 있다.
'Programming > Spring' 카테고리의 다른 글
[SpringBoot] Redis Channel Subscribe with MessagePack (0) | 2019.09.18 |
---|---|
[SpringBoot] Redis Publish Channel Subscribe (0) | 2019.09.18 |
[SpringBoot] 에러 로그 모니터링 with Sentry (0) | 2019.08.04 |
[SpringBoot] LocalDateTime Json Serialized (2) | 2019.06.19 |
Spring Boot Logging (Convert To JSON Format) (2) | 2019.05.27 |