Maison  >  Article  >  Java  >  Comment Springboot implémente les tâches planifiées via Scheduled

Comment Springboot implémente les tâches planifiées via Scheduled

WBOY
WBOYavant
2023-05-16 18:10:141316parcourir

Les tâches planifiées existent généralement dans les projets de moyenne et grande entreprise. Afin de réduire la pression sur les serveurs et les bases de données, certaines logiques métier sont souvent réalisées dans des délais. Les plus courants sont les rappels push des systèmes de services financiers. Généralement, les ordres du système de paiement rappellent en permanence lorsqu'ils ne reçoivent pas de contenu de rappel réussi. Ces rappels sont généralement effectués par des tâches planifiées. Il y a aussi la génération de rapports. Nous effectuons généralement cette opération lorsque le nombre de visites clients est trop faible, ce qui se produit souvent tôt le matin. À ce stade, nous pouvons également utiliser des tâches planifiées pour compléter la logique. SpringBoot a des tâches planifiées intégrées pour nous. Nous n'avons besoin que d'une annotation pour activer le timing de notre utilisation.

En développement, les tâches planifiées sont une fonction courante. Il est en fait très simple de développer des tâches planifiées sous Spring Boot. Le code spécifique est le suivant :

1. Configurer le package de dépendances pom.xml

Depuis l'entrepôt Maven par défaut. est souvent inaccessible, l'image de l'entrepôt maven d'Alibaba Cloud est utilisée ici.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring-boot-scheduled</name>
  <description>Demo project for Spring Boot</description>

  <!-- 阿里云maven仓库 -->
  <repositories>
    <repository>
      <id>public</id>
      <name>aliyun nexus</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>public</id>
      <name>aliyun nexus</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.5.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

2. Scénarios de tâches personnalisés

Mise en œuvre de tâches planifiées, fournissant des scénarios tels qu'une période fixe, un intervalle de retard de période fixe et une exécution à un moment précis. Utilisez l'annotation @Scheduled pour l'annotation.

ExampleTimer.java

package com.example;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ExampleTimer {
	SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
	@Scheduled(fixedRate = 10000)
	    public void timerRate() {
		System.out.println(dateFormat.format(new Date()));
	}
	//第一次延迟1秒执行,当执行完后2秒再执行
	@Scheduled(initialDelay = 1000, fixedDelay = 2000)
	    public void timerInit() {
		System.out.println("init : "+dateFormat.format(new Date()));
	}
	//每天20点16分50秒时执行
	@Scheduled(cron = "50 16 20 * * ?")
	    public void timerCron() {
		System.out.println("current time : "+ dateFormat.format(new Date()));
	}
}

3. Démarrez l'application

Pour démarrer le programme, vous devez ajouter l'annotation @EnableScheduling.

SpringBootScheduledApplication.java

package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class SpringBootScheduledApplication {
	public static void main(String[] args) {
		SpringApplication.run(SpringBootScheduledApplication.class, args);
	}
}

4.

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