특정 날짜 및 시간마다 원하는 명령이 자동으로 실행하는 기능 제공
휴먼 계정 처리, 정기적인 메일 전송 등의 기능이 자동 실행되도록 설정
스케줄링 관련 클래스를 작성하여 Spring Bean Configuration File(servlet-context.xml)에 Spring Bean으로 등록하고 특정 날짜 및 시간마다 메소드가 자동 호출되도록 설정
<!-- 스케줄링 관련 클래스를 Spring Bean으로 등록 -->
<beans:bean class="xyz.itwill09.util.Scheduler" id="scheduler"/>
<!-- *직접 설정하는 방법* -->
<!-- 스케줄링 기능을 구현하기 위해 Spring Bean Configuration File에 task 네임스페이스를
추가해 spring-task.xsd 파일의 엘리먼트를 사용할 수 있도록 설정 -->
<!-- scheduler : 스케줄링 기능을 제공하기 위한 엘리먼트 -->
<!-- id 속성 : scheduler 엘리먼트를 구분하기 위한 식별자를 속성값으로 설정 -->
<!-- pool-size 속성 : 스케줄링 기능을 구현하기 위한 스레드의 갯수를 속성값으로 설정 -->
<!--<task:scheduler id="baseScheduler" pool-size="10"/>-->
<!-- scheduled-tasks : scheduler 엘리먼트로 실행될 객체를 설정하기 위한 엘리먼트 -->
<!-- scheduler 속성 : 스케줄링 기능을 제공하기 위한 스케줄러(scheduler 엘리먼트)의
식별자를 속성값으로 설정 -->
<!-- scheduled : 스케줄러에 의해 실행될 객체와 메소드를 설정하기 위한 엘리먼트 -->
<!-- ref 속성 : 스케줄러에 의해 실행될 객체의 Spring Bean 식별자(beanName)을 속성값으로 설정 -->
<!-- method 속성 : 스케줄링 기능을 제공하는 객체로 호출될 메소드의 이름을 속성값으로 설정 -->
<!-- cron 속성 : 스케줄링 기능을 실행하기 위한 날짜 및 시간을 속성값으로 설정 -->
<!-- => 속성값 : 초 분 시 일 월 요일 - 패턴문자 사용 가능 -->
<!-- 스케줄링 관련 클래스의 메소드에 @Scheduled 어노테이션을 사용해 메소드가 특정 날짜 및
시간마다 자동 호출되도록 설정 가능 -->
<!--
<task:scheduled-tasks scheduler="baseScheduler">
<task:scheduled ref="scheduler" method="autoUpdate" cron="1 * * * * *"/>
</task:scheduled-tasks>
-->
<!-- 해당 엘리먼트만 추가하면 클래스에서 어노테이션을 사용해 설정 가능 -->
<!-- annotation-driven : 스케줄링 관련 어노테이션을 사용하기 위해 설정하는 엘리먼트 -->
<task:annotation-driven/>
=> annotation-driven 만 추가해서 사용하는 걸로
메소드에 스케줄링 기능을 제공하여 자동 호출되도록 설정하는 어노테이션
cron 속성: 메소드를 자동 호출하기 위한 날짜 및 시간을 속성값으로 설정
=> 속성값: 초 분 시 일 월 요일
=> 요일: 0(일) ~ 6(토) - [0] 대신 [7] 사용 가능
//@Scheduled(cron = "1 * * * * *")//매월 매일 매요일 매시 매분 1초
//@Scheduled(cron = "0 1 * * * *")//매월 매일 매요일 매시 1분 0초
//@Scheduled(cron = "0 0 5 * * *")//매월 매일 매요일 5시 0분 0초
//@Scheduled(cron = "0 0 5 1 1 *")//1월 1일 매요일 5시 0분 0초
//@Scheduled(cron = "0 0 5 * * 1-5")//매월 매일 월요일부터 금요일까지 5시 0분 0초
@Scheduled(cron = "0 0 5 1 1-12/3 *")//1월부터 12월까지 3개월마다 1일 매요일 5시 0분 0초
public void autoUpdate() {
System.out.println("### Scheduler 클래스의 autoUpdate() 메소드 호출 ###");
}
Scheduled 설정하면 인텔리제이에서는 왼쪽에 예정된 메서드라고 표시되어있다.