1. servlet-contxet.xml 설정
- src > main > webapp > WEB-INF > spring > appServlet > servlet-context.xml
- 하단의 namespaces > task 체크
2. bean 설정
- 아래의 코드 적용
- 주의사항 : context:component-scan 보다 아래쪽에 적용
- 주의사항 : class 에는 3번에 적용될 class파일 이름까지 넣어야 한다
- src > main > webapp > WEB-INF > spring > appServlet > servlet-context.xml
<context:component-scan base-package="com.hhkim.homepage" />
<!-- scheduler 설정 -->
<beans:bean class="com.hhkim.homepage.scheduler.testScheduler"/>
<task:annotation-driven scheduler="scheduler"/>
<task:scheduler id="scheduler" pool-size = "10"/>
3. 폴더 및 파일 생성
- batch 폴더 생성
- src > main > homepage > com > hhkim > homepage > scheduler
- scheduler 파일 생성
- src > main > homepage > com > hhkim > homepage > scheduler > testScheduler.java
4. 코드 적용
- 주의사항 : public class에 어노테이션 @component 적용 시 이중 실행이 될 수 있음으로 servlet-context.xml 설정에서 base-package와 스케줄러의 class가 중복되지 않도록 수정해야 한다
- 관련 설명 정리 : https://data-make.tistory.com/699
- src > main > homepage > com > hhkim > homepage > scheduler > testScheduler.java
package com.hhkim.homepage.batch;
import java.time.LocalDate;
import java.time.LocalTime;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
public class testScheduler {
/*************************************************
* cron : 초 분 시 일 월 요일(1-7 : 1 = 일요일, 7 = 토요일)
* * : 전체
* L : 마지막 [예시 : ( * * * * * 6L ) : 매월 마지막 주 금요일에만 동작]
* - : 해당 시간 간격 사이 조건 [예시 : ( * 5-10 * * * *) : 5분에서 10분 사이에서만 동작]
*************************************************/
@Scheduled(cron = " 15 * * * * * ")
public void testCronPrint() {
LocalDate nDate = LocalDate.now();
LocalTime nTime = LocalTime.now();
System.out.println("Scheduled 출력 테스트 : " + nDate + " / " + nTime);
}
/*************************************************
* (ms) 초마다 동작 : 작업이 끝난 시점부터 (이전 작업 완료 후)
*************************************************/
@Scheduled(fixedDelay = 10000)
public void testFixPrintOne() {
LocalDate nDate = LocalDate.now();
LocalTime nTime = LocalTime.now();
System.out.println("작업 종료 후 10초 (단위 ms) : " + nDate + " / " + nTime);
}
/*************************************************
* (ms) 초마다 동작 : 작업이 시작된 시점부터 (고정 시간 간격)
*************************************************/
@Scheduled(fixedRate = 5000)
public void testFixPrintTwo() {
LocalDate nDate = LocalDate.now();
LocalTime nTime = LocalTime.now();
System.out.println("작업 시작 후 5초 (단위 ms) : " + nDate + " / " + nTime);
}
}
5. 실행 확인
'Server > Spring(구버전)' 카테고리의 다른 글
15. logback - log4jdbc 쿼리 로그 개행 설정 (0) | 2022.04.07 |
---|---|
14. 데이터 처리 결과 : (modelAndView -> json) Web에서 확인 (0) | 2022.04.06 |
12. camelCase 설정 (0) | 2022.04.01 |
11. Mapper.xml (Query) 변경 후 자동인식 (0) | 2022.04.01 |
10. logback 설정 (0) | 2022.03.31 |