본문 바로가기
Programming/Java_Spring

Spring Scheduler 사용하기

by 곰네Zip 2022. 6. 21.

Spring에서 Scheduler를 이용하면, 아주 간단히(?) 일정 시간 간격으로 실행되는 job을 만들 수 있다.

 

Quartz를 사용하면 더 좋을 것 같은데, 우선 나는 이제 막 시작하는 단계이므로, spring scheduler사용하는걸로.

 

1. @EnableScheduling 애노테이션 추가.

  Applicaion.java에 위 애노테이션 추가하고,

 

2. Scheduler Task를 수행할 클래스에 애노테이션 추가하기

 Class에는 @Component 애노테이션을,  그리고 일정 간격으로 실행 될, 메소드에는 @Scheduled 애노테이션을 붙이면 된다. 나는 테스트용으로 5초간격으로 실행시킬 것이었으므로, fixedDelay = 5000으로.

 일정 시각에 반복적으로 실행하고싶을 땐, cron으로 하면 된다고 한다. 자세한 설명은 아래 링크 참조

https://gomnezip.tistory.com/451

 

Spring scheduler 특정 시각마다 실행되도록 하기

Spring scheduler 사용하기 관련한 내용은 아래 참조. https://gomnezip.tistory.com/384 Spring Scheduler 사용하기 Spring에서 Scheduler를 이용하면, 아주 간단히(?) 일정 시간 간격으로 실행되는 job을 만들 수 있다. Qu

gomnezip.tistory.com

 

3. 실행!

 intellij디버거로 돌려보니  일정 시간 간격으로 잘 돈다. 근데.. Tomcat에 올리려고 하다보니.. 안도네? 왜?

 안돌겠지.. 어떤 설정도 안했으니. 찾아보니 servlet-context에 추가해주어야 한다고 한다.

servlet-context.xml파일을 만들고 (있으면 그냥 그거 열고) namespace에 다음을 추가

xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="$Default
          http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
          http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"

 xsi:schemaLocation에는 기존거 + 위 location을 추가한다.

위와 같이 추가해주고.. mvc의 default-servlet-handler는 이것저것 설정할 필요 없이 알아서 해주기 위해서 필요한 것 같아 추가해봤는데 제거하고 테스트 해봐야지. 

web.xml에는 이 servlet을 추가하라고 해주니까 되더라

 우선 이렇게 하면 일정간격으로 실행되는 것까진 했다. 중복실행 방지와 Rest API추가는 다음에 포스팅.

반응형

댓글