Quartz 작업 스케줄링이란
Quartz는 작업 스케줄링 분야의 OpenSymphony 오픈 소스 조직의 또 다른 오픈 소스 프로젝트입니다. J2EE 및 J2SE 애플리케이션과 결합하거나 단독으로 사용할 수 있습니다. Quartz는 전적으로 Java로 작성된 오픈 소스 작업 스케줄링 프레임워크입니다. 작업 일정이라는 용어에 겁을 먹지 마십시오. Quartz 프레임워크에는 많은 추가 기능이 포함되어 있지만 단순한 형태로 인해 사용하기가 거의 참을 수 없을 만큼 쉽습니다!
사실 아직 명확하게 설명하지 않았습니다. 간단히 말하면 Quartz 작업 스케줄링은 예정된 작업을 실현할 수 있습니다. Windows와 유사한 작업 일정, .Net에서 Windows 서비스로 구현된 예약된 작업 등을 구현할 수 있습니다. 또한 Spring 프레임워크와 결합하면 사용이 매우 간단하고 시간 설정이 약간이라는 점을 제외하면 견딜 수 없습니다. 모호하다... 그건 중요하지 않다. 해결 방법은 나중에 알려줄게.
이제 요구 사항이 있습니다. 사용자가 시스템에서 작업을 완료하면 사용자에게 금화를 보상하지만 성능 문제를 고려하여 사용자에게 즉시 재충전되지는 않습니다. 이 시간대에는 사용자가 상대적으로 적기 때문에 오전 1시에 균일하게 사용자를 충전할 계획입니다. 당신은 무엇을 할 것인가?
1. GoldQuartz.java 파일 추가
물론 저처럼 예약된 작업을 실행하기 위해 특별히 cn.mayongfa.quartz 패키지를 추가할 수도 있습니다.
이 클래스의 목적은 정기적으로 사용자에게 금화를 자동으로 추가하는 것입니다.
아아아아끝났나요? 네, 그렇게 간단합니다. 그것은 주로 @Scheduled의 cron이 무엇을 의미하는지와 관련이 있습니다. 지금은 전혀 이해할 수 없기 때문에 작성 방법과 자동 생성 방법에 대해 설명하겠습니다.
2. springMVC-servlet.xml 파일 구성
@Component public class GlodQuartz { /** * 用户自动加金币 * 每天凌晨一点执行一次 */ @Scheduled(cron = "0 0 1 * * ? ") public void addUserGold() { System.out.println("凌晨一点了,你睡了么?"); } /** * 每隔5秒定时清理缓存 */ @Scheduled(cron = "*/5 * * * * ? ") public void cacheClear() { System.out.println("时间又过去5秒了,真令人伤感..."); } }
정말 간단합니다! 사용하기가 너무 쉬워서 참을 수 없습니다. 이
<!-- 扫描定时作业调度包 --> <task:annotation-driven /> <context:component-scan base-package="cn.mayongfa.quartz"/>
결과를 보려면 실행
이 시점에서 필요에 따라 수행하려는 예약된 작업을 완료할 수 있습니다. 그럼 @Scheduled의 cron이 무엇을 의미하는지 자세히 설명하겠습니다.
Cron 표현식에는 초, 분, 시간, 일, 월, 요일, 연도(선택 필드)의 7개 필드가 포함됩니다.
Cron 트리거는 일련의 특수 문자도 사용합니다.
백슬래시(/) 문자는 증분 값을 나타냅니다. 예를 들어 초 필드의 "5/15"는 5초부터 시작하여 15초마다를 의미합니다.
물음표(?) 문자와 문자 L 문자는 날짜 및 요일 필드에서만 사용할 수 있습니다. 물음표는 이 필드에 특정 값이 포함되어 있지 않음을 나타냅니다. 따라서 월 내의 날짜를 지정하는 경우 요일 필드에 "?"를 삽입하여 요일 값이 중요하지 않음을 나타낼 수 있습니다. 문자 L 문자는 마지막의 약자입니다. 해당 월의 마지막 날에 실행되도록 예약하려면 날짜 필드에 입력합니다. 요일 필드에서 "L"은 단독으로 존재할 경우 "7"과 같고, 그렇지 않으면 해당 월 내 요일의 마지막 인스턴스를 나타냅니다. 따라서 "0L"은 매월 마지막 일요일에 실행되도록 예정되어 있음을 의미합니다.
날짜 필드의 문자(W) 문자는 지정된 값에 가장 가까운 평일에 실행되도록 예약합니다. 해당 월의 첫 번째 영업일에 실행되도록 예약하려면 월 날짜 필드에 "1W"를 입력합니다.
파운드(#) 문자는 해당 월의 특정 근무일 인스턴스를 지정합니다. 매월 두 번째 월요일에 작업을 예약하려면 요일 필드에 "MON#2"를 입력합니다.
별표(*) 문자는 필드에 가능한 모든 값을 사용할 수 있음을 나타내는 와일드카드 문자입니다.
요약하자면
일부 코드를 정기적으로 실행해야 할 때 Job Scheduling을 사용하면 됩니다. 이를 위해 Quartz가 탄생했는데 Spring과 결합하면 매우 편리합니다. Quartz를 사용하면 코드를 빠르게 작성할 수 있습니다. 며칠 전에 우리 프로젝트 팀의 동료가 이 기능을 사용하고 그에게 깊은 인상을 받았습니다.
Java에서 Quartz 작업 스케줄링 타이머를 사용하는 Spring과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!