일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 모던 자바 인 액션
- H-index
- K번째수
- 고차원 함수
- 크론 표현식
- @EnableScheduling
- 롬복 어노테이션
- 루씬 인 액션
- 커링
- 가장 큰 수
- kubenetes
- 완주하지 못한 선수
- 스프링 스케쥴러
- 코딩 테스트
- @Data
- @Setter
- @Getter
- 해시
- @configuration
- 정렬
- 영속 자료구조
- 기능개발
- 전화번호 목록
- 프로그래머스
- 쿠버네티스
- 스택/큐
- 다리를 지나는 트럭
- Java
- 알고리즘
- 검색 기능 확장
- Today
- Total
Today I Learned
스프링 스케쥴러 (@Scheduled) 설정 및 사용하기 본문
일정 시간/주기마다 호출되어야하는 작업이 필요할때 스프링 스케쥴러를 사용하면 간편하게 구현할 수 있다.
스케쥴러를 사용하기 위해서는 간단한 설정이 필요하다.
설정은 어노테이션을 추가하거나, XML에 직접 명시할 수 있다.
1. Annotaion 설정
작업을 진행할 클래스에 다음 어노테이션을 추가한다.
@Configuration 어노테이션으로 해당 클래스가 Bean 구성 클래스임을 명시하고,
@EnableScheduling 어노테이션으로 클래스를 스케쥴링 목적으로 사용하겠다고 명시하면 된다.
TestScheduler.class
@Configuration
@EnableScheduling
public class TestScheduler{
...
}
2. XML 설정
task 네임스페이스를 추가하고, annotation-driven으로 @Schedule과 @Async 애노테이션을 활성화 시키면 된다.
...
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
...
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd"
...
<task:annotation-driven/>
다음은 dispatcher-servlet.xml(servlet-context.xml)에 위 XML 설정을 추가한 예제이다.
dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">
<context:component-scan base-package="highligher.cookie.controller" />
<task:annotation-driven/>
</beans>
작업을 진행할 클래스에는 @Component 어노테이션을 추가한다.
TestScheduler.class
@Component
public class TestScheduler{
...
}
3. Scheduler
여기까지 되었으면 @Scheduled 어노테이션을 통해 스케쥴을 등록할 수 있다.
@Scheduled 활용을 위한 속성은 다음과 같다.
-
Cron - cron 표현식을 통해 "초 분 시 일 월 주 (년)"으로 표현한다.
-
fixedRate - 이전 Task가 시작한 시점부터 설정한 (밀리세컨드 단위)시간만큼 대기한다.
-
fixedDelay - 이전 Task가 끝난 시간부터 설정한 (밀리세컨드 단위)시간만큼 대기한다.
위에서 생성한 클래스에 함수를 작성하고 @Scheduled 어노테이션과 필요한 속성만 붙이면 끝
//@Scheduled(cron = "0 0 5 * * *")// 매일 5시에 동작
//@Scheduled(fixedDelay=3600000) // 이전 task 종료 시간으로부터 한시간 후 마다 동작
@Scheduled(fixedRate = 1000) // 이전 task 시작 시간으로부터 매 1초마다 동작
public void testMethod(){
System.out.println("test_shceduled");
}
자세한 크론 표현식은 아래 링크 참고
https://highlighter9.tistory.com/34
'JAVA & Spring' 카테고리의 다른 글
Feign 적용 (0) | 2021.03.04 |
---|---|
Lombok 어노테이션 (0) | 2021.03.01 |
크론(CRON ) 표현식 (0) | 2021.02.06 |