Geplante Aufgaben gibt es im Allgemeinen in Projekten auf mittlerer und großer Unternehmensebene. Um den Druck auf Server und Datenbanken zu verringern, werden bestimmte Geschäftslogiken häufig in bestimmten Zeiträumen ausgeführt. Die häufigsten sind Push-Rückrufe von Finanzdienstleistungssystemen. Im Allgemeinen werden Zahlungssystemaufträge kontinuierlich zurückgerufen, wenn sie keine erfolgreichen Rückrufinhalte erhalten. Solche Rückrufe werden normalerweise durch geplante Aufgaben abgeschlossen. Hinzu kommt die Erstellung von Berichten, die wir in der Regel durchführen, wenn die Anzahl der Kundenbesuche zu gering ist, was oft am frühen Morgen der Fall ist. Zu diesem Zeitpunkt können wir auch geplante Aufgaben verwenden, um die Logik zu vervollständigen. SpringBoot verfügt über integrierte geplante Aufgaben. Wir benötigen lediglich eine Anmerkung, um das Timing für unsere Verwendung zu ermöglichen.
In der Entwicklung sind geplante Aufgaben tatsächlich sehr einfach. Der spezifische Code lautet wie folgt:
1 Abhängigkeitspaket pom.xml
Da das Standard-Maven-Warehouse ist Da der Zugriff häufig nicht möglich ist, wird hier das Maven-Warehouse-Image von Alibaba Cloud verwendet.
<?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. Benutzerdefinierte Aufgabenszenarien
Geplante Aufgabenimplementierung, die Szenarien wie einen festen Zeitraum, ein festes Verzögerungsintervall und einen festgelegten Zeitpunkt für die Ausführung bereitstellt. Verwenden Sie für die Annotation die Annotation @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. Starten Sie die Anwendung
Um das Programm zu starten, müssen Sie die Annotation @EnableScheduling hinzufügen.
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); } }
Das obige ist der detaillierte Inhalt vonWie Springboot geplante Aufgaben über Scheduled implementiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!