크론 표현식은 Spring에서 특정 시간 마다 반복되는 작업을 수행하고 싶을 때 사용하는 표현식 입니다
스케줄러는 DB 작업이나 반복되는 작업 등등에서 많이 쓰이는데용,
Spring의 cron을 이용해서 시간 주기를 설정할 수가 있답니다.
🌱 servlet-context.xml 파일에 task namespace 추가하기
<task:scheduled-tasks>
<task:scheduled ref="className" method="excuteFunction" cron="0 0/1 * * * ?" />
</task:scheduled-tasks>
servlet-context.xml에 task namespace를 추가한 모습 입니다
task:scheduled-tasks로 시작해주고, ref에는 스케줄이 동작될 클래스를 작성해주면 됩니다.
- ref에는 bean을 등록해주는 것이라서, @Component, @Controller 등의 Annotation으로 등록된 이름을 추가
method에는 실행될 메서드를 입력해주면 됩니다
🌱 cron 표현식 설정해주기
크론 표현식은 앞에서부터 [초-분-시-일-월-요일-년도] 로 구성이 되고,
년도는 생략 가능합니다
표현식은 공식 사이트에서 확인할 수 있습니당
https://spring.io/blog/2020/11/10/new-in-spring-5-3-improved-cron-expressions
New in Spring 5.3: Improved Cron Expressions
<div class="paragraph"> <p>If you regularly listen to <a href="https://bootifulpodcast.fm">A Bootiful Podcast</a>, you might have heard about the improvements we made to Spring Framework’s cron support. Cron expressions are mostly used in Spring applicat
spring.io
예를 들어서 위 예제처럼
cron="0 0/1 * * * ?" />
이렇게 정의 했다면, 1분에 한번씩 excuteFunction 함수가 실행 됩니다.
만약 2023년에 12시 45분에 동작하도록 하고 싶다면?
cron="0 45 12 * * * 2023" />
이렇게 작성할 수 있습니다.
이걸 언제 작성하나;; 하시고 계시다면 자동으로 만들어주는 사이트도 있습니닥 🫠
http://www.cronmaker.com/;jsessionid=node0nxisjbagfffd2bfs6g3qqv7h847086.node0?0
CronMaker
www.cronmaker.com
🌱 @Scheduled Annotation으로 설정하기
servlet-context.xml 말고 annotation을 붙여서도 실행할 수 있습니닥
/*...*/
@Scheduled(cron="0 0/1 * * * ?")
public void excuteFunction()
{
...
}
/*...*/
'BackEnd > Java&Spring' 카테고리의 다른 글
Java의 Hash 알고리즘 MessageDigest (0) | 2023.03.16 |
---|---|
HTTP Query Parameter에서 Arrary List 사용 (0) | 2023.02.01 |
StringUtils (0) | 2023.01.18 |
Looking For Annotation~ (0) | 2023.01.16 |
Intellij) Junit Test Code 작성 시 "Execution failed for task" 해결 방법 (0) | 2023.01.09 |