자바 에서 Spring 은 Quartz 작업 스케줄 러 를 사용 합 니 다.

4510 단어 spring타이머quartz
Quartz 퀘 스 트 스케줄 링 이 뭐 예요?
Quartz 는 Job scheduling 분야 에서 OpenSymphony 오픈 소스 조직 이 또 하나의 오픈 소스 프로젝트 로 J2EE 와 J2SE 응용 프로그램 을 결합 하여 단독으로 사용 할 수 있다.Quartz 는 자바 가 완전히 작성 한 오픈 소스 작업 스케줄 링 프레임 워 크 입 니 다.작업 스케줄 이라는 용어 가 너 를 놀 라 게 하지 마라.비록 Quartz 프레임 워 크 는 많은 추가 기능 을 통합 시 켰 지만 간단 한 형식 으로 볼 때 쉽게 사용 할 수 있다 는 것 을 알 게 될 것 이다.
사실 그 는 여전히 명확 하 게 설명 하지 못 했다.나 는 간단하게 말 했다.Quartz 작업 스케줄 은 바로 정시 임 무 를 실현 할 수 있 는 것 이다.이것 은 윈도 우즈 와 유사 한 임무 계획,우리.Net 의 윈도 우즈 서비스 가 실현 하 는 정시 임무 등 을 실현 할 수 있다.또한 스프링 프레임 워 크 와 결합 하여 사용 하면 간단 하고 폭발 적 이 며 시원 하 게 참 을 수 없다.시간 설정 이 비교적 까다 로 운 것 을 제외 하고...이것 은 중요 하지 않다.이따가 해결 방안 을 알려 줄 게.
현재 하나의 수요 가 있 습 니 다.사용자 가 우리 시스템 에서 특정한 조작 을 완성 하고 우 리 는 금화 로 사용자 에 게 보답 합 니 다.그러나 실시 간 으로 사용자 에 게 충전 하 는 것 이 아니 라 성능 문 제 를 고려 하여 우 리 는 비동기 또는 우 리 는 새벽 1 시 에 사용자 계 정 에 통일 적 으로 충전 하려 고 합 니 다.이 시간 대 에 사용자 가 비교적 적 기 때 문 입 니 다.어떻게 할 거 예요?
GoldQuartz.java 파일 추가
물론 저 와 마찬가지 로 cn.mayongfa.quartz Package 패 키 지 를 추가 하여 정시 임 무 를 수행 하 는 종 류 를 넣 을 수 있 습 니 다.
이런 종류의 목적 은 정 해진 시간 에 자동 으로 사용자 에 게 금 화 를 넣 는 것 이다.

@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  ,     ...");
 }
}

완성 이 야?응,그래,이렇게 간단 해.주로@Scheduled 와 관련 된 cron 이 무슨 뜻 인지,어떻게 쓰 고 어떻게 자동 으로 생 성 되 는 지,지금 은 전혀 보이 지 않 기 때 문 입 니 다.
2.springMVC-servlet.xml 파일 설정

 <!--           -->
 <task:annotation-driven />
 <context:component-scan base-package="cn.mayongfa.quartz"/>
여기까지.사실 이렇게 간단하게 완 성 했 어!쓰기 좋아.못 참 겠 어.이를 설정 하려 면 xml 파일 의 beans 성명 에 다음 이 있어 야 합 니 다.

xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
 http://www.springframework.org/schema/task 
 http://www.springframework.org/schema/task/spring-task.xsd"
전체 버 전 설정 여기 보기 을 누 르 십시오.
실행 보기 결과

여기까지 오 면 당신 은 자신의 요구 에 따라 자신 이 수행 하고 자 하 는 정시 임 무 를 완성 할 수 있 습 니 다.그럼 제 가 자세히 말씀 드 리 겠 습 니 다.@Scheduled 의 cron 은 무슨 뜻 입 니까?
Cron 표현 식 은 초,분,시간,월 내 날짜,월,주 내 날짜,년(선택 가능 한 필드)을 포함 합 니 다.
Cron 트리거 는 일련의 특수 문 자 를 사용 합 니 다.
  • 반사 선(/)문 자 는 증 량 값 을 나타 낸다.예 를 들 어 초 필드 에서'5/15'는 5 초부 터 15 초 에 한 번 씩 시작 하 는 것 을 의미한다.
  • 물음표(?)문자 와 알파벳 L 문 자 는 월 내 날짜 와 주 내 날짜 필드 에서 만 사용 할 수 있 습 니 다.물음 표 는 이 필드 에 구체 적 인 값 이 포함 되 어 있 지 않다 는 것 을 나타 낸다.따라서 월 내 날 짜 를 지정 하면 주 내 날짜 필드 에'?'를 삽입 할 수 있 습 니 다.주 내 날짜 값 이 중요 하지 않다 는 뜻 입 니 다.알파벳 L 문 자 는 last 의 줄 임 말이다.월 내 날짜 필드 에 놓 으 면 그 달 마지막 날 에 실 행 될 예정 임 을 나타 낸다.주 내 날짜 필드 에'L'이 따로 존재 하면'7'과 같 습 니 다.그렇지 않 으 면 그 달 내 주 내 날짜 의 마지막 인 스 턴 스 를 대표 합 니 다.그래서'0L'는 그 달 마지막 일요일 에 실 행 될 예정 이 라 고 밝 혔 다.
  • 월 내 날짜 필드 에 있 는 알파벳(W)문 자 는 지정 한 값 에 가장 가 까 운 근무일 에 실 행 됩 니 다.'1W'를 월 내 날짜 필드 에 넣 고 그 달의 첫 근무일 내 에 실행 을 배정 하 겠 다 고 밝 혔 다.
  • 우물 번호(\#)문 자 는 주어진 달 에 구체 적 인 근무일 인 스 턴 스 를 지정 합 니 다.'MON\#2'를 주 내 날짜 필드 에 넣 고 그 달 둘째 월요일 에 임 무 를 배정 하 겠 다 고 밝 혔 다.
  • 별표(*)문 자 는 연결 문자 로 이 필드 가 가능 한 모든 값 을 받 아들 일 수 있 음 을 나타 낸다.
  • 너 는 분명히 미 칠 것 이다.이 모든 정의 들 이 좀 무서워 보일 수도 있다.나 는 지금 cron 표현 식 을 매우 간단하게 만 드 는 방법 이 있다.들 어 볼 래?
    어떤 사람들 은 사람들 이 cron 표현 식 을 빨리 쓰 는 것 을 편리 하 게 하기 위해 표현 식 을 만 드 는 사 이 트 를 만 들 었 다.http://tools.jb51.net/code/Quartz_Cron_create
    이 사이트 에 가면 당신 에 게 맞 는 cron 표현 식 을 아주 빠르게 만 들 수 있 습 니 다.어서 가서 해 보 세 요.
    총괄 하 다
    시간 에 맞 춰 코드 를 실행 해 야 할 때 작업 스케줄 을 사용 할 수 있 습 니 다.Quartz 는 바로 이것 을 위해 태 어 났 고 Spring 과 결합 하 는 것 이 매우 편리 합 니 다.당신 에 게 코드 를 빨리 쓰 라 고 했 습 니 다.Quartz 는 며칠 전에 우리 프로젝트 팀 의 한 동료 가 나 에 게 알려 주 었 습 니 다.내 가 사용 하 자 나 는 그 에 게 굴복 당 했 습 니 다.
    위의 코드 는 이 주 소 를 방문 하여 전체 항목 의 예 시 를 볼 수 있 습 니 다:http://xiazai.jb51.net/201702/yuanma/SpringQuartzDemo_jb51.rar
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기