J'ai créé un programme qui exécute périodiquement des tâches en me référant au tutoriel officiel de Spring Boot (Task Schedule).
Apache Maven 3.6.3 Système d'exploitation: macOS Mojave version 10.14.6 Éditeur de texte: VSCode Java: 11.0.2
Tout d'abord, ouvrez Spring Initializr et créez une fondation avec le contenu suivant.
Décompressez le fichier zip résultant et ouvrez-le dans un éditeur.
Ajoutez les dépendances suivantes à pom.xml.
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>3.1.2</version>
<scope>test</scope>
</dependency>
Awaitility est une * bibliothèque qui fournit un langage DSL (domain-specific language) simple pour les tests de systèmes asynchrones *. (De Introduction à Awaitility)
Créez un fichier ScheduledTasks.java sous src / main / java / com / example / schedulingtasks.
Le contenu est le suivant.
ScheduledTasks.java
package com.example.schedulingtasks;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
log.info("The time is now {}", dateFormat.format(new Date()));
}
}
fixedRate spécifie l'intervalle entre les appels de méthode, mesuré à partir de l'heure de début de chaque appel. D'autres options, telles que fixedDeley, spécifient l'intervalle entre les appels à partir de la fin de la tâche.
@Scheduled Exécutez la tâche périodiquement. Vous pouvez choisir parmi une variété d'options (tableau ci-dessous). Spécifiez le cycle d'exécution avec l'annotation Planifiée pour la tâche que vous souhaitez exécuter périodiquement. Cette annotation ne peut être spécifiée que pour les méthodes qui n'acceptent aucun argument. (Cela n'entraîne pas d'erreur de compilation, mais une exception se produit au moment de l'exécution.)
Cette fois, je vais exécuter la tâche toutes les 5 secondes avec fixedRate.
field | description |
---|---|
fixedDelay | Combien de millisecondes après la dernière exécution de la méthode est exécutée. |
fixedRate | Combien de millisecondes après l'heure de début de la dernière exécution de la méthode? |
initialDelay | Temps d'attente pour la première exécution de la méthode. |
cron | Écrivez cron et définissez le calendrier. Vous pouvez également spécifier le fuseau horaire à l'aide du fuseau. |
Vous pouvez également utiliser (cron = "...") pour des paramètres plus avancés.
Logger et LoggerFactory servent à envoyer le résultat à la console. Vous pouvez afficher le journal en spécifiant la classe dans l'argument de LoggerFactory.getLogger ().
Ajoutez ensuite le code au fichier SchedulingTasksApplication.java créé automatiquement sous src / main / java / com / example / schedulingtasks /.
Le contenu est le suivant.
SchedulingTasksApplication.java
package com.example.schedulingtasks;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {
public static void main(String[] args) {
SpringApplication.run(SchedulingTasksApplication.class);
}
}
@SpringBootApplication Il s'agit d'une annotation pratique qui fonctionne comme une annotation pour trois. Il contient les trois annotations suivantes.
@Configuration Vous pouvez enregistrer des beans supplémentaires dans le contexte et importer des classes de configuration supplémentaires.
@Bean C'est pour renvoyer la classe instanciée par la méthode qui décrit @Bean.
@EnableAutoConfiguration Active le mécanisme de configuration automatique de Spring Boot.
@ComponentScan Trouvez d'autres composants, paramètres, etc. dans le package et dites à Spring de trouver le contrôleur.
@EnableScheduling Activez la planification.
Le code est maintenant terminé. Exécutons-le avec la commande suivante.
./mvnw spring-boot:run
La tâche s'exécute toutes les 5 secondes.
C'était facile à créer sans ajouter de dépendances!
Recommended Posts