IT수업/STS3

IT 수업 21주차 (139) Scheduled

워제하 2024. 5. 13. 10:11

 

@Scheduled

일정한 시간 간격으로, 혹은 특정 시간에 코드가 실행되도록 설정할 수 있다.

bath는 여러 작업이 순차적으로 처리되는데 scheduled는 특정 작업을 특정 시간에 단순하게 처리한다.

 

 

● @Scheduled 속성

fixedRate : 작업 수행시간과 상관없이 일정 주기마다 메소드를 호출
fixedDelay : (작업 수행 시간을 포함하여) 작업을 마친 후부터 주기 타이머가 돌아 메소드를 호출
initialDelay : 스케줄러에서 메소드가 등록되자마자 수행하는 것이 아닌 초기 지연시간을 설정
cron : Cron 표현식을 사용하여 작업을 예약

 

 

 

< 실습하기 >

12 프로젝트를 복사해서 13_Sceduled 프로젝트를 만들어준다.

 

src/main/java에 Scheduled라는 패키지를 새로 만들고 그 안에 Scheduling이라는 클래스를 만들어준다.

 

 

 

 

그리고 root-context.xml로 가서 빈등록을 위해 scheduled context를 만들어 준다.

( 등록할때는 패키지 이름과 동일하게 해줘야 한다. ex.소문자/대문자 구분 )

 

 

 

@EnableScheduling을 선언하여 스케줄링을 활성화 시키고 빈 내부 메서드에 @Scheduled를 추가하면 간단히 스케줄링 작업을 추가 할 수 있다.

실행하면 1초마다 sysout이 출력된다.

 

 

 

이번에는 cron식을 활용하여 20초마다 sysout이 출력되도록 할 것이다.

 

cron="초 분 시 일 월 요일" 순으로 적으면 된다.

 

 

 

● cron 표현식

- 초(0-59)  분(0-59)  시(0-23)  일(1-31)  월(1-12)  요일(0-6)
- 매 초마다 실행: "* * * * * *"
- 매 시간의 30분마다 실행: "0 30 * * * *"
- 매일 오전 8시 30분마다 실행: "0 30 8 * * *"
- 매주 월요일 아침 9시 30분마다 실행: "0 30 9 * * 1"
- 매월 1일 아침 4시 30분마다 실행: "0 30 4 1 * *"
- 매주 월요일부터 금요일까지 아침 10시마다 실행: "0 0 10 * * 1-5"