Maison Java javaDidacticiel Spring utilise le minuteur de planification de tâches Quartz en Java

Spring utilise le minuteur de planification de tâches Quartz en Java

Feb 07, 2017 pm 03:09 PM

Qu'est-ce que la planification des tâches Quartz

Quartz est un autre projet open source de l'organisation open source OpenSymphony dans le domaine de la planification des tâches. Il peut être combiné avec des applications J2EE et J2SE ou utilisé seul. Quartz est un framework de planification de tâches open source entièrement écrit en Java. Ne laissez pas le terme planification des tâches vous effrayer. Bien que le framework Quartz intègre de nombreuses fonctionnalités supplémentaires, dans sa forme simple, vous constaterez qu'il est presque insupportablement facile à utiliser !

En fait, il ne l'a toujours pas expliqué clairement. Laissez-moi simplement dire : la planification des tâches Quartz peut réaliser des tâches planifiées. Il peut mettre en œuvre des plannings de tâches similaires à Windows, des tâches planifiées mises en œuvre par nos services Windows sous .Net, etc. De plus, il est extrêmement simple à utiliser lorsqu'il est combiné avec le framework Spring, et c'est insupportable, sauf que le réglage de l'heure est un peu obscur... Ce n'est pas important, je vous dirai la solution plus tard.

Il existe désormais une exigence : lorsqu'un utilisateur effectue une opération dans notre système, nous récompensons l'utilisateur avec des pièces d'or, mais il ne s'agit pas d'une recharge instantanée pour l'utilisateur. Compte tenu des problèmes de performances, nous utilisons de l'asynchrone ou nous. prévoyez de recharger le compte de l'utilisateur uniformément à une heure du matin, car il y a relativement peu d'utilisateurs pendant cette période. que ferez-vous?

1. Ajoutez un fichier GoldQuartz.java

Bien sûr, comme moi, vous pouvez ajouter un package cn.mayongfa.quartz spécifiquement pour exécuter des tâches planifiées.

Le but de cette classe est d'ajouter automatiquement des pièces d'or aux utilisateurs à intervalles réguliers.

@Component
public class GlodQuartz {
 
 /**
  * 用户自动加金币
  * 每天凌晨一点执行一次
  */
 @Scheduled(cron = "0 0 1 * * ? ")
 public void addUserGold() {
  System.out.println("凌晨一点了,你睡了么?");
 }
 
 /**
  * 每隔5秒定时清理缓存
  */
 @Scheduled(cron = "*/5 * * * * ? ")
 public void cacheClear() {
  System.out.println("时间又过去5秒了,真令人伤感...");
 }
}
Copier après la connexion

Est-ce que c'est fait ? Eh bien, oui, c'est aussi simple que cela. Cela implique principalement ce que signifie le cron de @Scheduled. Je parlerai ci-dessous de la façon de l'écrire et de le générer automatiquement, car vous ne pouvez pas le comprendre du tout maintenant.

2. Configurez le fichier springMVC-servlet.xml

<!-- 扫描定时作业调度包 -->
<task:annotation-driven />
<context:component-scan base-package="cn.mayongfa.quartz"/>
Copier après la connexion

C'est en fait aussi simple et fait ! C'est tellement simple à utiliser que je ne peux pas le supporter. Une condition préalable à la configuration de cette est que la déclaration des beans dans votre fichier XML doit avoir :

xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
 http://www.springframework.org/schema/task
 http://www.springframework.org/schema/task/spring-task.xsd"
Copier après la connexion

Exécuter pour afficher les résultats

Spring utilise le minuteur de planification de tâches Quartz en Java

À ce stade, vous pouvez effectuer les tâches planifiées que vous souhaitez effectuer en fonction de vos besoins. Alors laissez-moi vous expliquer en détail ce que signifie le cron de @Scheduled ?
L'expression Cron comprend les 7 champs suivants : secondes, minutes, heures, jour du mois, mois, jour de la semaine, année (champs facultatifs).

Les déclencheurs Cron utilisent également une série de caractères spéciaux :

Le caractère barre oblique inverse (/) représente une valeur d'incrément. Par exemple, « 5/15 » dans le champ des secondes signifie toutes les 15 secondes à partir de la seconde 5.

Le caractère point d'interrogation (?) et le caractère lettre L ne sont disponibles que dans les champs Jour du mois et Jour de la semaine. Le point d'interrogation indique que ce champ ne contient pas de valeur spécifique. Ainsi, si vous spécifiez un jour dans le mois, vous pouvez insérer un « ? » dans le champ du jour de la semaine pour indiquer que la valeur du jour de la semaine n'a pas d'importance. Le caractère de la lettre L est l’abréviation de dernier. Mettez-le dans le champ date du mois pour planifier l'exécution le dernier jour du mois. Dans un champ de jour de la semaine, « L » est égal à « 7 » s'il est présent seul, sinon il représente la dernière instance d'un jour de la semaine dans le mois. Donc "0L" signifie qu'il est prévu qu'il soit exécuté le dernier dimanche du mois.

La lettre (W) dans un champ jour du mois planifie l'exécution le jour de la semaine le plus proche de la valeur spécifiée. Mettez "1W" dans le champ de date du mois pour planifier l'exécution le premier jour ouvrable du mois.

Le caractère dièse (#) spécifie une instance de jour ouvrable spécifique pour un mois donné. Mettez « MON#2 » dans le champ du jour de la semaine pour planifier la tâche le deuxième lundi du mois.

Le caractère astérisque (*) est un caractère générique, indiquant que le champ peut accepter n'importe quelle valeur possible.

Pour résumer

Lorsque vous avez besoin d'exécuter du code régulièrement, vous pouvez utiliser la planification des tâches pour cela, et il est très pratique de le combiner avec Spring. Quartz permet d'écrire du code rapidement. Un collègue de notre équipe projet m'en a parlé il y a quelques jours, je l'ai utilisé et j'ai été impressionné par lui.

Pour plus d'articles liés à Spring utilisant le minuteur de planification de tâches Quartz en Java, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Apr 19, 2025 pm 04:51 PM

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Apr 19, 2025 pm 06:21 PM

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Apr 19, 2025 pm 11:42 PM

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Apr 19, 2025 pm 11:30 PM

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Apr 19, 2025 pm 11:45 PM

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Comment convertir en toute sécurité les objets Java en tableaux? Comment convertir en toute sécurité les objets Java en tableaux? Apr 19, 2025 pm 11:33 PM

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Plateforme de commerce électronique SKU et conception de la base de données SPU: comment prendre en compte à la fois les attributs définis par l'utilisateur et les produits sans attribution? Plateforme de commerce électronique SKU et conception de la base de données SPU: comment prendre en compte à la fois les attributs définis par l'utilisateur et les produits sans attribution? Apr 19, 2025 pm 11:27 PM

Explication détaillée de la conception des tables SKU et SPU sur les plates-formes de commerce électronique Cet article discutera des problèmes de conception de la base de données de SKU et SPU dans les plateformes de commerce électronique, en particulier comment gérer les ventes définies par l'utilisateur ...

Comment obtenir élégamment les conditions de requête de création de nom de variable de classe d'entité lors de l'utilisation de tkmybatis pour la requête de base de données? Comment obtenir élégamment les conditions de requête de création de nom de variable de classe d'entité lors de l'utilisation de tkmybatis pour la requête de base de données? Apr 19, 2025 pm 09:51 PM

Lorsque vous utilisez TkMyBatis pour les requêtes de base de données, comment obtenir gracieusement les noms de variables de classe d'entité pour créer des conditions de requête est un problème courant. Cet article épinglera ...

See all articles