Maison  >  Article  >  Java  >  Comment implémenter une minuterie avec SpringBoot

Comment implémenter une minuterie avec SpringBoot

王林
王林avant
2023-05-10 14:58:221125parcourir

Implémentation de timer

Code de démarrage Spring Boot, l'annotation @EnableScheduling est ajoutée pour activer la fonction timer

@SpringBootApplication   
@EnableScheduling   // 开启定时功能
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

Code de tâche de planification, la classe de tâche doit être injectée dans le conteneur IoC via l'annotation @Component

@Component
public class TestSchedulingTask {
    // 这个cron表达式代表从0秒开始,每过3秒执行一次。
    @Scheduled(cron = "0/3 * * * * ?")
    public void test(){
        // 大家可以根据公司的业务来实现,更希望是@Autowrite注入service层的接口,业务逻辑写在service层中。
        // 这里测试我就输出当前系统时间了...
        Date date  = new Date(System.currentTimeMillis());
        String rule = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(rule);
        String format = simpleDateFormat.format(date);
        System.out.println(format);
    }
}

Notez ici chacune Toutes les méthodes de tâche doivent être annotées avec @Scheduled et spécifier des expressions cron.

Vous pouvez être rassuré, et il existe également des sites Web qui génèrent des expressions cron en ligne. Jetons un coup d'œil aux résultats de sortie de la console. Explication détaillée de l'expression cron

Comment implémenter une minuterie avec SpringBoot

Minute (minute)

0-59

,/-*Explication des caractères autorisés :, : C'est une énumération avec plusieurs valeurs. Par exemple, 5 et 20 en seconde représentent le déclencheur à 5 et 20 secondes. / : valeur 1/valeur 2, la valeur 1 représente l'heure de début, la valeur 2 représente la fréquence à laquelle, par exemple, dans mon cas, il se déclenche toutes les 3 secondes à partir de 0 seconde. - : Valeur de plage, de combien de temps à combien de temps. * : Commun à toutes les gammes. ? : Existe uniquement en date et semaine. Si vous souhaitez déclencher le 2 de chaque mois, mais si vous utilisez * la semaine, cela se déclenchera tous les jours, ce qui provoquera un bug Alors est-ce nécessaire ? pour remplacer *. L : Cela signifie le dernier et apparaît dans la date et la semaine. Par exemple, utiliser L dans la date représente le dernier jour du mois, et utiliser 3L dans la semaine représente le déclencheur du dernier mercredi. W : Indique les jours ouvrables, utilisé dans les dates. Si 9W est utilisé, si le 9 tombe le lundi 1-5, il se déclenchera directement. Si le 9 est un samedi, il se déclenchera le 8. Le 9 est un dimanche, il sera déclenché le lundi, c'est-à-dire le 10.
Heure (heure) 0-23 ,/-*
Date (jour du mois) 1-31 (Vous il faut considérer que le mois est incohérent) ,/-*?LW
mois (mois) 1-12 (l'abréviation anglaise correspondante est également acceptable) ,/-*
jour de semaine ) 1-7 ,/-*?L
année (année) Cette chose n'est fondamentalement pas utilisée Cette chose n'est fondamentalement pas utilisée

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer