예약된 작업은 일반적으로 중대형 기업 수준 프로젝트에 존재합니다. 서버 및 데이터베이스에 대한 부담을 줄이기 위해 특정 비즈니스 로직이 일정 기간 내에 완료되는 경우가 많습니다. 더 일반적인 것은 금융 서비스 시스템의 푸시 콜백입니다. 일반적으로 결제 시스템 주문은 성공적인 콜백 반환 콘텐츠를 수신하지 못할 때 지속적으로 콜백합니다. 보고서 생성도 있습니다. 일반적으로 고객 방문 수가 너무 적을 때, 즉 이른 아침에 이 작업을 완료합니다. 이때 예약된 작업을 사용하여 논리를 완료할 수도 있습니다. SpringBoot에는 우리를 위한 예약된 작업이 내장되어 있습니다. 우리는 사용 타이밍을 활성화하기 위해 주석만 필요합니다.
개발 시 예약된 작업은 일반적인 기능입니다. 실제로는 스프링 부트에서 예약된 작업을 개발하는 것이 매우 간단합니다.
1. 기본 Maven 웨어하우스이므로 종속성 패키지 구성. 액세스할 수 없는 경우가 많으므로 여기에는 Alibaba Cloud의 Maven 창고 이미지가 사용됩니다.
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot-scheduled</name> <description>Demo project for Spring Boot</description> <!-- 阿里云maven仓库 --> <repositories> <repository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id> <name>aliyun nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.5.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2. 맞춤형 작업 시나리오
예약된 작업 구현으로 고정 기간, 고정 기간 지연 간격, 설정 시점 실행 등의 시나리오를 제공합니다. 주석에는 @Scheduled 주석을 사용하십시오.
ExampleTimer.java
package com.example; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ExampleTimer { SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 10000) public void timerRate() { System.out.println(dateFormat.format(new Date())); } //第一次延迟1秒执行,当执行完后2秒再执行 @Scheduled(initialDelay = 1000, fixedDelay = 2000) public void timerInit() { System.out.println("init : "+dateFormat.format(new Date())); } //每天20点16分50秒时执行 @Scheduled(cron = "50 16 20 * * ?") public void timerCron() { System.out.println("current time : "+ dateFormat.format(new Date())); } }
3. 애플리케이션 시작
프로그램을 시작하려면 @EnableScheduling 주석을 추가해야 합니다.
SpringBootScheduledApplication.java
package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class SpringBootScheduledApplication { public static void main(String[] args) { SpringApplication.run(SpringBootScheduledApplication.class, args); } }
4 출력 결과.
위 내용은 Springboot가 Scheduled를 통해 예약된 작업을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!