>  기사  >  Java  >  Spring은 Java에서 Quartz 작업 스케줄링 타이머를 사용합니다.

Spring은 Java에서 Quartz 작업 스케줄링 타이머를 사용합니다.

高洛峰
高洛峰원래의
2017-02-07 15:09:391200검색

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秒了,真令人伤感...");
 }
}

정말 간단합니다! 사용하기가 너무 쉬워서 참을 수 없습니다. 이 구성을 위한 전제 조건은 xml 파일의 Bean 선언에 다음이 있어야 한다는 것입니다.

<!-- 扫描定时作业调度包 -->
<task:annotation-driven />
<context:component-scan base-package="cn.mayongfa.quartz"/>

결과를 보려면 실행

Spring은 Java에서 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 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.