Spring Task 정시 작업 구성 및 사용 상세 정보
스프링에서 시간 작업 사용하기
xml 프로필 기반 시간 작업 사용
우선spring 오픈 시간 작업 설정
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">
<task:annotation-driven /> <!-- -->
<bean id="myTask" class="com.spring.task.MyTask"></bean>
<task:scheduled-tasks>
<!-- -->
<task:scheduled ref="myTask" method="show" cron="*/5 * * * * ?" />
<task:scheduled ref="myTask" method="print" cron="*/10 * * * * ?"/>
</task:scheduled-tasks>
<!-- -->
<context:component-scan base-package="com.spring.task" />
</beans>
자신의 작업 수행 논리 정의
package com.spring.task;
/**
*
*/
public class MyTask {
public void show() {
System.out.println("show method 1");
}
public void print() {
System.out.println("print method 1");
}
}
메모 기반 시간 작업 사용
package com.spring.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
*
*/
@Component
public class MyTask2 {
/**
* 。 01:00
*/
@Scheduled(cron = "0 0 1 * * *")
public void show() {
System.out.println("show method 2");
}
/**
* , 2
*/
@Scheduled(fixedRate = 1000*2)
public void print() {
System.out.println("print method 2");
}
}
이렇게 하면 프로젝트가 시작되면 정시 임무는 규칙에 따라 제때에 집행된다.Spring Boot에서 정시 작업 사용
Spring Boot에서 사용하기 편리합니다.
도입
springboot starter
패키지
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
프로그램 입구 시작 클래스에 추가@EnableScheduling
, 정시 작업 기능 오픈
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
정시 작업 논리 정의
@Component
public class MyTask3 {
private int count=0;
@Scheduled(cron="*/6 * * * * ?")
private void process() {
System.out.println("this is scheduler task runing "+(count++));
}
}
작업 수행 규칙 설명먼저
@Scheduled
주석의 원본 코드를 보겠습니다.
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
public @interface Scheduled {
String cron() default "";
String zone() default "";
long fixedDelay() default -1;
String fixedDelayString() default "";
long fixedRate() default -1;
String fixedRateString() default "";
long initialDelay() default -1;
String initialDelayString() default "";
}
메모에서 8가지 매개변수를 전달할 수 있습니다.java.util.TimeZone
의 zoneIdString
유형String
유형String
유형입니다.Cron 표현식은 문자열로 문자열은 5 또는 6개의 공백으로 구분되며 6 또는 7개의 도메인으로 구분되며 각 도메인은 다음 두 가지 구문 형식을 갖습니다.
*
: 이 도메인과 일치하는 임의의 값을 나타냅니다. Minutes 도메인에서 *를 사용하면 분당 이벤트가 발생합니다.?
: Day ofMonth와 Day ofWeek 두 도메인에서만 사용할 수 있습니다.그것 또한 영역의 임의의 값과 일치하지만, 실제로는 그렇지 않습니다.Day of Month와 Day of Week가 서로 영향을 미치기 때문입니다.예를 들어 매달 20일에 스케줄링을 터치하려면 20일이 도대체 무슨 요일이든지 간에 다음과 같은 글만 사용할 수 있다. 13 13 15 20?,그중 마지막 분만 쓸 수 있다고요?사용할 수 없습니다. *를 사용하면 요일에 상관없이 촉발된다는 뜻입니다. 실제로는 그렇지 않습니다.-
: 범위를 나타냅니다. 예를 들어 Minutes 영역에서 5-20을 사용하면 5분에서 20분에 한 번씩 촉발됩니다./
: 시작 시간부터 트리거하고 고정 시간마다 트리거하는 것을 나타낸다. 예를 들어 Minutes역에서 5/20을 사용하면 5분에 한 번, 25, 45 등은 각각 한 번 트리거하는 것을 의미한다.,
: 열거된 값을 나타냅니다.예를 들어 Minutes 영역에서 5, 20을 사용하면 5분과 20분에 한 번씩 터치하는 것을 의미한다.L
: 마지막으로 Day ofWeek와 Day ofMonth 도메인에만 나타날 수 있음을 나타냅니다. 만약에 Day ofWeek 도메인에서 5L을 사용한다면 마지막 목요일에 촉발된다는 것을 의미합니다.W
: 유효한 근무일(월요일부터 금요일까지)을 나타내며 Day ofMonth 도메인에만 표시되며 지정된 날짜와 가장 가까운 유효한 근무일에만 이벤트가 발생합니다.예를 들어 Day ofMonth에서 5W를 사용하고 5일이 토요일이면 가장 가까운 근무일인 금요일, 즉 4일에 터치합니다.만약 5일이 일요일이라면 6일(월)에 촉발한다.만약 5일이 월요일에서 금요일 중 하루라면, 5일에 촉발된다.또 하나는 W의 최근 찾기가 달을 넘지 않는다는 점이다.LW
: 이 두 문자는 연결할 수 있으며 어느 달의 마지막 근무일, 즉 마지막 금요일을 나타낸다.#
: 매달 몇 번째 요일을 결정하는 데 사용되며 DayofMonth 도메인에만 표시됩니다.예를 들어 4#2는 어느 달의 두 번째 수요일을 나타낸다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.