SpringBoot 는 SpringTask 를 통합 하여 정시 임 무 를 수행 하 는 절차 입 니 다.

반장 상점 중 일부 사용자 가 주문 서 를 제출 했 지만 지불 하지 않 은 경우 가 있 습 니 다.이전에 저 는 quartz 정시 임 무 를 통 해 매일 5 시 에 지불 하지 않 은 주문 서 를 스 캔 한 다음 에 사용자 의 메 일 주 소 를 읽 고 메 일 을 보 내 서 사용자 에 게 가능 한 한 빨리 지불 하 라 고 알 렸 습 니 다.이번 에는 Spring 에서 가 져 온 SpringTask 로 정시 임 무 를 수행 하 겠 습 니 다.
Cron 표현 식
Cron 표현 식 은 6~7 개의 시간 요 소 를 포함 한 문자열 로 SpringTask 에서 작업 수행 시간 을 지정 할 수 있 습 니 다.
Cron 의 문법 형식
Seconds Minutes Hours DayofMonth Month DayofWeek
Cron 형식의 모든 시간 요소 에 대한 설명

                  
Seconds , - * / 0-59
Minutes , - * / 0-59
Hours , - * / 0-23
DayofMonth, - * / ? L W 0-31
Month , - * / 1-12
DayofWeek , - * / ? L # 1-7 SUN-SAT
Cron 형식의 특수 문자 설명
문자 역할.  예 를 들다
, 매 거 진 값 을 열거 하 다. Minutes 도 메 인 에서 5,10 을 사용 하면 5 점,10 점 에서 한 번 씩 터치
- 더 니 Minutes 필드 에서 5-10 을 사용 하면 5 분부 터 10 분 까지 분당 한번 터치
* 임 의 값 일치 Minutes 도 메 인 에서*를 사용 하면 매 분 에 한 번 씩 터치 합 니 다.
/ 시작 시간 부터 촉발,고정 시간 마다 한번 촉발 Minutes 도 메 인 에서 5/10 을 사용 하여 5 분 동안 한번 터치 하고 10 분 마다 한번 더 터치
? Dayof Month 와 Dayof Week 에서 임의의 값 과 일치 합 니 다. Dayof Month 역 에서 사용 하 시 겠 습 니까?,하루 에 한 번 씩
# Dayof Month 에서 몇 주 째 인지 확인 합 니 다. 셋째 일요일
L 마지막 Dayof Week 에서 5L 을 사용 하면 마지막 목요일 에 터치 한 다 는 뜻 입 니 다.
W 유효 근무일(월요일 부터 금요일 까지) Dayof Month 에서 5W 를 사용 하고 5 일이 토요일 이면 최근 근무일 인 4 일 에 한번 터치 합 니 다.
SpringTask 통합
SpringTask 는 이미 Spring 프레임 워 크 에 존재 하기 때문에 의존 할 필요 가 없습니다.
SpringTaskConfig 클래스 설정
설정 클래스 에@Enable Scheduling 주 해 를 추가 하면 SpringTask 의 정시 작업 능력 을 시작 할 수 있 습 니 다.

@Configuration
@EnableScheduling
public class SpringTaskConfig {
}
CallPaySpringTask 클래스 를 추가 하여 정시 작업 을 수행 합 니 다.

package ltd.hanzo.mall.task;

import lombok.extern.slf4j.Slf4j;
import ltd.hanzo.mall.service.TaskService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;

/**
 * @Author   QAQ
 * @email [email protected]
 * @Date 2020/5/19 23:33
 * @link https://github.com/Tianhaoy/hanzomall
 * @Description:                          
 */
@Slf4j
@Component
public class CallPaySpringTask {

 @Resource
 private TaskService taskService;

 /**
 * cron   :Seconds Minutes Hours DayOfMonth Month DayOfWeek [Year]
 */
 @Scheduled(cron = "0 0 5 * * ?")
 private void callPay() {
 log.info("  SpringTask               ");
	//             --                   
 taskService.callPayOrders();
 }
}
주문 정 보 를 찾 는 service 층 mapper 층 코드 는 붙 이지 않 고 자신의 업무 에 따라 개발 하면 된다.주로 공유 프로 세 스 로 코드 구현 이 어렵 지 않 습 니 다.
작은 매듭
지금까지 SpringTask 정시 미 션 을 통 해 메 일 메 시 지 를 보 내 는 절차 가 모두 소개 되 었 습 니 다.지식 은 공유 해 야 가치 가 있 습 니 다.문제 가 있 으 면 제 페이지 에서 제 메 일 로 연락 해 주세요.

좋은 웹페이지 즐겨찾기