2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
In der modernen Softwareentwicklung sind geplante Aufgaben eine Schlüsselkomponente der Anwendungsautomatisierung und betrieblichen Effizienz. Ob Datensicherung, System-Health-Check, regelmäßige Berichterstellung oder automatisierte Prozesse, die durch Benutzeraktivitäten ausgelöst werden, geplante Aufgaben spielen eine unverzichtbare Rolle. Sie stellen die Kontinuität der Geschäftslogik und die Selbstwartungsfähigkeit des Systems sicher.
Im traditionellen Entwicklungsmodell erfordert die Implementierung geplanter Aufgaben häufig die Abhängigkeit von den geplanten Aufgaben des Betriebssystems (z. B. Crontab von Linux) oder das Schreiben komplexer Geschäftslogik. Diese Methoden haben viele Nachteile:
Als beliebtes Java-Framework bietet Spring Boot eine elegantere und integriertere Möglichkeit, geplante Aufgaben zu implementieren. Es vereinfacht die Konfiguration und bietet umfangreiche APIs, sodass Entwickler geplante Aufgabenfunktionen schnell in Anwendungen integrieren können.
Spring Boot bestanden@EnableScheduling
Und@Scheduled
Anmerkungen machen es extrem einfach, geplante Aufgaben in Spring-Anwendungen zu schreiben und zu konfigurieren. Darüber hinaus bietet Spring Boot auch eine Integration mit Spring Task Scheduler, der Unterstützung für erweiterte Anforderungen an geplante Aufgaben bietet.
Spring Boot wurde vom Pivotal-Team (jetzt Teil von VMware) entwickelt und ist ein modulares, schnelles Entwicklungs- und Bereitstellungs-Framework, das auf dem Spring-Framework basiert. Ziel ist es, den anfänglichen Einrichtungs- und Entwicklungsprozess von Spring-Anwendungen zu vereinfachen und den Konfigurationsaufwand für Entwickler durch die Bereitstellung einer Reihe von Standardkonfigurationen zu reduzieren.
Die Spring Boot-Anwendung wird durch gestartetSpringApplication.run()
Durch die Implementierung der Methode wird der Spring-Anwendungskontext automatisch erstellt und konfiguriert. Spring Boot bietet außerdem eine Befehlszeilenschnittstelle (CLI) und einen Actuator-Endpunkt zur Überwachung und Verwaltung von Anwendungen.
Spring Boot bestandenspring-boot-starter-parent
Bietet Abhängigkeitsmanagement und vereinfacht die Konfiguration von Maven- und Gradle-Projekten. Es definiert Versionsnummern und Abhängigkeitsbereiche vor und erleichtert so die Verwaltung von Abhängigkeitskonflikten und der Versionskontrolle.
Spring Boot verfügt über eine aktive Open-Source-Community, die eine große Anzahl von Plugins und „Startern“ bereitstellt, die die Abhängigkeiten enthalten, die zum Erstellen spezifischer Funktionen erforderlich sind, zspring-boot-starter-web
Zum Erstellen von RESTful-Anwendungen.
Nachfolgend finden Sie die Schritte zum Erstellen einer einfachen Spring Boot-Anwendung und den entsprechenden Beispielcode:
spring-boot-starter-web
。import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/")
public String home() {
return "Hello, Spring Boot!";
}
}
java -jar
Der Befehl wird ausgeführt.Spring Boot ist kein Ersatz für Spring Framework, sondern eine schnelle Entwicklungsmethode basierend auf Spring Framework. Es bietet eine schnelle Möglichkeit, Spring-Anwendungen zu starten und gleichzeitig alle Funktionen und die Flexibilität des Spring Frameworks beizubehalten.
Spring Boot ist ein Framework für die moderne Java-Entwicklung. Es vereinfacht die Konfiguration und bietet eine Reihe sofort einsatzbereiter Funktionen, sodass sich Entwickler auf die Implementierung der Geschäftslogik statt auf den Aufbau der Infrastruktur konzentrieren können. In den folgenden Kapiteln werden wir uns mit der Anwendung von Spring Boot in geplanten Aufgaben befassen und zeigen, wie man seine Funktionen nutzt, um effiziente und zuverlässige automatisierte Aufgaben zu erstellen.
Eine geplante Aufgabe ist ein Code- oder Programmabschnitt, der zu einem vorgegebenen Zeitpunkt automatisch ausgeführt wird. Sie können einmalig oder periodisch sein und werden zur Durchführung automatisierter Aufgaben wie Datensicherung, Versenden von Benachrichtigungen, Durchführung geplanter Prüfungen usw. verwendet.
Geplante Aufgaben sind von entscheidender Bedeutung, um den Betrieb Ihres Systems aufrechtzuerhalten und Geschäftsprozesse zu automatisieren. Sie können manuelle Eingriffe reduzieren, die Effizienz steigern und die Pünktlichkeit und Genauigkeit von Aufgaben sicherstellen.
java.util.Timer
。@Scheduled
。java.util.Timer
Implementieren Sie geplante AufgabenHier ist ein Beispiel für die Verwendung der Java-StandardbibliothekTimer
Beispiel einer einfachen geplanten Aufgabe, die von einer Klasse implementiert wird:
import java.util.Timer;
import java.util.TimerTask;
public class SimpleTimerTask {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
};
Timer timer = new Timer();
long delay = 0;
long intervalPeriod = 1000; // 间隔1秒执行一次
timer.scheduleAtFixedRate(task, delay, intervalPeriod);
}
}
Cron-Ausdrücke sind eine leistungsstarke Möglichkeit, die Ausführungszeit geplanter Aufgaben zu konfigurieren. Das Folgende ist ein Beispiel für einen Cron-Ausdruck, um jeden Tag um 1 Uhr morgens eine Aufgabe auszuführen:
0 0 1 * * ?
Spring Boot bestanden@Scheduled
Anmerkungen vereinfachen die Konfiguration und Implementierung geplanter Aufgaben.Hier ist eine Verwendung@Scheduled
Beispiel für eine kommentierte geplante Spring Boot-Aufgabe:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportCurrentTime() {
System.out.println("当前时间:" System.currentTimeMillis());
}
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
public void scheduleTask() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
}
@Scheduled
Anmerkung@Scheduled
Es handelt sich um eine von Spring bereitgestellte Annotation, um die Implementierung geplanter Aufgaben zu vereinfachen. Sie können durch einfache Annotationskonfiguration regelmäßig ausgeführte Methoden erstellen.
@Scheduled
AnmerkungskonfigurationfixedRate
: Geben Sie das feste Zeitintervall (in Millisekunden) zwischen zwei Aufgabenausführungen an.fixedDelay
: Geben Sie ein festes Zeitintervall zwischen dem Ende der letzten Aufgabenausführung und dem Start der nächsten Aufgabe an.initialDelay
: Geben Sie die Verzögerungszeit an, bevor die Aufgabe zum ersten Mal ausgeführt wird.cron
: Verwenden Sie Cron-Ausdrücke, um den Zeitplan für die Aufgabenausführung anzugeben.fixedRate
Das folgende Beispiel zeigt eine Methode, die alle 5 Sekunden ausgeführt wird:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
@Scheduled(fixedRate = 5000)
public void taskWithFixedRate() {
System.out.println("任务执行:" LocalDateTime.now());
}
}
fixedDelay
Das folgende Beispiel zeigt eine Methode, die 1 Sekunde nach Abschluss der Ausführung der vorherigen Aufgabe ausgeführt wird:
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
Das folgende Beispiel zeigt eine Methode, die zuerst 10 Sekunden nach dem Start der Anwendung und dann alle 5 Sekunden ausgeführt wird:
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Cron-Ausdrücke bieten komplexere Zeiteinstellungen, sodass Sie bestimmte Ausführungszeiten angeben können. Das folgende Beispiel zeigt eine Methode, die jeden Tag um 1 Uhr morgens ausgeführt wird:
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
Geplante Aufgaben können Ausnahmen auslösen, so Spring@Async
Annotation, um Aufgaben asynchron auszuführen und zu verwenden@ExceptionHandler
um Ausnahmen zu behandeln.
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()