날아라쩡글이의 블로그입니다.
@EnableScheduling 스프링 스케쥴러 본문
728x90
반응형
스케쥴링 - 클라이언트와 상관없이 일정시점에 이뤄져야하는 것을 의미한다. 매일, 어느싯점, 특정한 주기로 실행되는 것을 @Scheduled 이라고 부른다.
springboot는 @EnableScheduling을 진입점에 어노테이션을 부착하면 된다.
예를 들면 숙소를 예약할 때 예매한 시점으로부터 결제를 안하면 예매를 취소하는 기능을 의미한다.
@SpringbootApplication위에 부착한다.
maven으로 만든 경우, spring been으로 생성한 context-root.xml에 task namespace에서 누르고, taskannotation-driven으로 설정한다.
클래스를 하나 정의한다. 컴포넌트라는 어노테이션을 붙이면 자동으로 스프링의 bean으로 등록된다.
그다음은 메소드에 @Scheduled라는 어노테이션을 부착한다.
특정메소드에 @Scheduled어노테이션을 설정하면 주기적으로 메소드가 실행되게 된다.
그 주기를 설정하기 위해서 어노테이션에 옵션을 설정하면된다.
메소드를 재정의하는 것이다.
- fixedDelay
- 이전 작업이 종료된 후 설정된 시간만큼 기다린 후에 시작한다.
- 이전 작업을 종료 하고, 1초 후 바로 실행된다.
- fixedRate
- 이전 작업이 종료되지 않아도 설정된 시간마다 시작한다.
- 설정된 시간만 지나면 바로 시작한다.
- cron
- 원하는 시간대를 설정하여 작업을 실행한다.
- 유닉스 시스템안에서 반복적으로 실행해야하는 쉘 스크립트로 프로그램을 짜고, 특정 주기로 실행할 수 있다.
- 유닉스 시스템안에서 실행되는 시스템을 가져올 수 있다.
- 원하는 시간대를 설정하여 6자리 문자로 작성되어 있는 cron작성방법으로 작성한다.
- 초,분,시,일,월,요일,년으로 작성할 수 있으며, 띄어쓰기로 구분이 된다.
- *라고 작성하면 모든것을 포함 한다는 의미이다.
- ?라는 고려하지 않는다.
- 거의 년은 사용하지 않고, 6개의 필드로 사용한다.
- 초 0~59 , - * /
- 분 0~59
- 시 0~23
- 일 1~ 31 , - * ? / L W C
- 월 1~12
- 요일 0~6 , - * ? / L C #
- 특수문자의 사용방법
- * : 모든값
- ? : 해당 필드를 고려하지 않는다.
- 일자를 나타내는 필드와 요일을 나타내는 필드에 동시에 설정할 수 없다.
- , : 여러개의 값을 나열한다. ex) 0,15,30,45
- - : 범위를 표시한다. ex) 2-4는 2,3,4를 의미한다.
- / : 초기치를 기준으로 일정하게 증가하는 값을 의미한다.
- 초를 나타내는 필드에 0/15는 0을 시작으로 15초씩 증가를 의미한다.
- L : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일을 의미한다.
- 2월과 30일로 끝나는 날이 있을 수 있기 때문에 설정할 수 있다.
- W : 가장 가까운 평일 ex) 10W 10일에서 가장 가까운 평일
- # : 몇째주의 무슨요일을 지정
- 컴포넌드를 붙이고, Service를 Autowired를 전달받아서 필요한 업무로직을 주기적으로 실행할 수 있다.
- DB access 를 스케쥴을 조절할 수 있다.
- 기간이 만료되면 폐기하는 작업을 한다. 기간이 만료되는 것을 찾는 것을 쿠폰 사용만료날짜가 작성이 되어있을 경우 하루에 1번만 실행되는 것을 실행한다.
반응형
'중앙 HTA (2106기) story > spring java framwork story' 카테고리의 다른 글
카카오 페이 데모결제시 (0) | 2022.02.11 |
---|---|
front-end와 back-end rest API연결 (0) | 2022.02.04 |
카카오 javascript로 로그인하기 (0) | 2022.01.21 |
리엑트 , 앵귤러, 뷰.js의 차이점 (0) | 2022.01.20 |
spring boot에서 jsp사용하기 (0) | 2022.01.19 |
Comments