[JAVA] Calendrier des tâches du didacticiel Spring Boot

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).

environnement

Apache Maven 3.6.3 Système d'exploitation: macOS Mojave version 10.14.6 Éditeur de texte: VSCode Java: 11.0.2

Créer

Tout d'abord, ouvrez Spring Initializr et créez une fondation avec le contenu suivant.

スクリーンショット 2020-07-14 10.56.39.png

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.

Exécuter

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. スクリーンショット 2020-07-14 10.32.52.png

C'était facile à créer sans ajouter de dépendances!

Recommended Posts

Calendrier des tâches du didacticiel Spring Boot
Tutoriel Spring Boot à l'aide de l'authentification Spring Security
[Tutoriel] Spring Batch
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Annotations utilisées dans les outils de gestion des tâches Spring Boot
Afficher la tâche Gradle dans le projet Spring Boot
Fiche d'apprentissage SPRING BOOT 01
[J'ai essayé] Tutoriel de printemps
Botte de printemps + Heroku Postgres
Rédaction de mémo de démarrage de printemps (1)
Première botte à ressort (DI)
Fiche d'apprentissage SPRING BOOT 02
Aide-mémoire Spring Boot2
Gestion des exceptions Spring Boot
Mappage du servlet Spring Boot
Environnement de développement-développement Spring Boot-
Procédure d'apprentissage Spring Boot
Apprentissage de Spring Boot [Début]
Rédaction de mémos de démarrage de printemps (2)
Résumé du document Spring Boot 2.2
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Disponibilité de l'application Spring Boot 2.3
Tutoriels Spring Boot Sujets
Télécharger avec Spring Boot
[Spring Boot] Construction de l'environnement (macOS)
Définir le paramètre contextuel dans Spring Boot
Essayez Spring Boot de 0 à 100.
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Spring Boot sur Microsoft Azure
Implémenter GraphQL avec Spring Boot
Spring 5 et Spring Boot 2 Procédure de préparation pratique
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Multi-projets Spring Boot 2 avec Gradle
[Spring Boot] Création d'applications Web
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
Paramètres d'échange à chaud Spring Boot
[Java] Thymeleaf Basic (Spring Boot)
Introduction à Spring Boot ① ~ DI ~
Téléchargement de fichiers avec Spring Boot
Spring Boot commençant par copie
Introduction à Spring Boot ② ~ AOP ~
Application Java CICS-Run - (4) Application Spring Boot
Spring Boot à partir de Docker
Spring Boot + Springfox springfox-boot-starter 3.0.0 Utilisation
Conseils relatifs à Spring Boot DB
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
[Spring Boot] Recette de processus de pagination facile
Utiliser Spring JDBC avec Spring Boot
Construction de l'environnement Docker × Spring Boot
Changements majeurs dans Spring Boot 1.5
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
NoHttpResponseException dans Spring Boot + WireMock