2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dans le développement de logiciels modernes, les tâches planifiées sont un élément clé de l'automatisation des applications et de l'efficacité opérationnelle. Qu'il s'agisse de sauvegarde de données, de contrôle de l'état du système, de génération régulière de rapports ou de processus automatisés déclenchés par les activités des utilisateurs, les tâches planifiées jouent un rôle indispensable. Ils assurent la continuité de la logique métier et les capacités d'auto-maintenance du système.
Dans le modèle de développement traditionnel, la mise en œuvre de tâches planifiées nécessite souvent de s'appuyer sur les tâches planifiées du système d'exploitation (telles que la crontab de Linux) ou d'écrire une logique métier complexe. Ces méthodes présentent de nombreux inconvénients :
En tant que framework Java populaire, Spring Boot offre un moyen plus élégant et intégré d'implémenter des tâches planifiées. Il simplifie la configuration et fournit des API riches, permettant aux développeurs d'intégrer rapidement des fonctions de tâches planifiées dans les applications.
Spring Boot réussi@EnableScheduling
et@Scheduled
Les annotations facilitent extrêmement l'écriture et la configuration de tâches planifiées dans les applications Spring. De plus, Spring Boot fournit également une intégration avec Spring Task Scheduler, qui prend en charge des exigences de tâches planifiées plus avancées.
Spring Boot est développé par l'équipe Pivotal (qui fait désormais partie de VMware) et est un framework de développement et de déploiement modulaire et rapide basé sur le framework Spring. Il vise à simplifier le processus de configuration et de développement initial des applications Spring et à réduire le travail de configuration des développeurs en fournissant une série de configurations par défaut.
L'application Spring Boot est démarrée viaSpringApplication.run()
Méthode implémentée, elle créera et configurera automatiquement le contexte de l'application Spring. Spring Boot fournit également une interface de ligne de commande (CLI) et un point de terminaison Actuator pour surveiller et gérer les applications.
Spring Boot réussispring-boot-starter-parent
Fournit une gestion des dépendances et simplifie la configuration des projets Maven et Gradle. Il prédéfinit les numéros de version et les plages de dépendances, ce qui facilite la gestion des conflits de dépendances et du contrôle des versions.
Spring Boot dispose d'une communauté open source active qui fournit un grand nombre de plugins et de « démarreurs » contenant les dépendances nécessaires pour créer des fonctionnalités spécifiques, telles quespring-boot-starter-web
Pour créer des applications RESTful.
Vous trouverez ci-dessous les étapes pour créer une application Spring Boot simple et l'exemple de code correspondant :
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
La commande s'exécute.Spring Boot ne remplace pas Spring Framework, mais une méthode de développement rapide basée sur Spring Framework. Il fournit un moyen rapide de démarrer des applications Spring tout en conservant toutes les fonctionnalités et la flexibilité de Spring Framework.
Spring Boot est un framework conçu pour le développement Java moderne. Il simplifie la configuration et fournit une série de fonctions prêtes à l'emploi, permettant aux développeurs de se concentrer sur la mise en œuvre de la logique métier plutôt que sur la construction d'une infrastructure. Dans les chapitres suivants, nous approfondirons l'application de Spring Boot dans les tâches planifiées et montrerons comment utiliser ses fonctionnalités pour créer des tâches automatisées efficaces et fiables.
Une tâche planifiée est un morceau de code ou un programme exécuté automatiquement à une heure prédéterminée. Ils peuvent être ponctuels ou périodiques et sont utilisés pour effectuer des tâches automatisées telles que la sauvegarde des données, l'envoi de notifications, la réalisation de contrôles programmés, etc.
Les tâches planifiées sont essentielles pour maintenir votre système opérationnel et automatiser les processus métier. Ils peuvent réduire les interventions manuelles, augmenter l’efficacité et garantir la rapidité et l’exactitude des tâches.
java.util.Timer
。@Scheduled
。java.util.Timer
Mettre en œuvre des tâches planifiéesVoici un exemple utilisant la bibliothèque standard JavaTimer
Exemple de tâche planifiée simple implémentée par classe :
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);
}
}
Les expressions Cron constituent un moyen puissant de configurer le temps d'exécution des tâches planifiées. Voici un exemple d'expression cron pour exécuter une tâche tous les jours à 1 heure du matin :
0 0 1 * * ?
Spring Boot réussi@Scheduled
Les annotations simplifient la configuration et la mise en œuvre des tâches planifiées.Voici une utilisation@Scheduled
Exemple de tâche planifiée Spring Boot annotée :
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
annotation@Scheduled
Il s'agit d'une annotation fournie par Spring pour simplifier la mise en œuvre des tâches planifiées. Il vous permet de créer des méthodes exécutées périodiquement grâce à une simple configuration d'annotations.
@Scheduled
Configuration des annotationsfixedRate
: Spécifiez un intervalle de temps fixe (en millisecondes) entre deux exécutions de tâches.fixedDelay
: Spécifiez un intervalle de temps fixe entre la fin de la dernière exécution de la tâche et le début de la tâche suivante.initialDelay
: Spécifiez le délai avant que la tâche soit exécutée pour la première fois.cron
: utilisez des expressions cron pour spécifier le calendrier d'exécution des tâches.fixedRate
L'exemple suivant montre une méthode qui s'exécute toutes les 5 secondes :
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
L'exemple suivant montre une méthode exécutée 1 seconde après la fin de l'exécution de la tâche précédente :
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
L'exemple suivant montre une méthode exécutée 10 secondes après le démarrage de l'application, puis toutes les 5 secondes :
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Les expressions Cron fournissent des paramètres de temps plus complexes, vous permettant de spécifier des temps d'exécution spécifiques. L'exemple suivant montre une méthode exécutée tous les jours à 1 heure du matin :
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
Les tâches planifiées peuvent générer des exceptions, fournit Spring@Async
annotation pour effectuer des tâches de manière asynchrone et utiliser@ExceptionHandler
pour gérer les exceptions.
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()