2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nello sviluppo software moderno, le attività pianificate sono una componente chiave dell'automazione delle applicazioni e dell'efficienza operativa. Che si tratti di backup dei dati, controllo dello stato del sistema, generazione regolare di report o processi automatizzati attivati dalle attività degli utenti, le attività pianificate svolgono un ruolo indispensabile. Garantiscono la continuità della logica aziendale e le capacità di automanutenzione del sistema.
Nel modello di sviluppo tradizionale, l'implementazione delle attività pianificate spesso richiede l'affidamento alle attività pianificate del sistema operativo (come il crontab di Linux) o la scrittura di una logica aziendale complessa. Questi metodi presentano molti inconvenienti:
Essendo un popolare framework Java, Spring Boot fornisce un modo più elegante e integrato per implementare le attività pianificate. Semplifica la configurazione e fornisce API avanzate, consentendo agli sviluppatori di integrare rapidamente le funzioni delle attività pianificate nelle applicazioni.
Lo Spring Boot è passato@EnableScheduling
E@Scheduled
Le annotazioni rendono estremamente semplice scrivere e configurare le attività pianificate nelle applicazioni Spring. Inoltre, Spring Boot fornisce anche l'integrazione con Spring Task Scheduler, che fornisce supporto per requisiti di attività pianificate più avanzati.
Spring Boot è sviluppato dal team Pivotal (ora parte di VMware) ed è un framework modulare e rapido di sviluppo e distribuzione basato sul framework Spring. Ha lo scopo di semplificare il processo di installazione e sviluppo iniziale delle applicazioni Spring e di ridurre il lavoro di configurazione degli sviluppatori fornendo una serie di configurazioni predefinite.
Viene avviata l'applicazione Spring BootSpringApplication.run()
Metodo implementato, creerà e configurerà automaticamente il contesto dell'applicazione Spring. Spring Boot fornisce inoltre un'interfaccia a riga di comando (CLI) e un endpoint Actuator per monitorare e gestire le applicazioni.
Lo Spring Boot è passatospring-boot-starter-parent
Fornisce la gestione delle dipendenze e semplifica la configurazione dei progetti Maven e Gradle. Predefinisce i numeri di versione e gli intervalli di dipendenze, semplificando la gestione dei conflitti di dipendenza e del controllo della versione.
Spring Boot dispone di una comunità open source attiva che fornisce un gran numero di plugin e "Starter" che contengono le dipendenze necessarie per creare funzionalità specifiche, comespring-boot-starter-web
Per creare applicazioni RESTful.
Di seguito sono riportati i passaggi per creare una semplice applicazione Spring Boot e il codice di esempio corrispondente:
spring-boot-starter-web
。import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/")
public String home() {
return "Hello, Spring Boot!";
}
}
java -jar
Il comando viene eseguito.Spring Boot non è un sostituto di Spring Framework, ma un metodo di sviluppo rapido basato su Spring Framework. Fornisce un modo rapido per avviare le applicazioni Spring mantenendo tutte le funzionalità e la flessibilità di Spring Framework.
Spring Boot è un framework progettato per il moderno sviluppo Java. Semplifica la configurazione e fornisce una serie di funzioni pronte all'uso, consentendo agli sviluppatori di concentrarsi sull'implementazione della logica di business piuttosto che sulla costruzione dell'infrastruttura. Nei capitoli seguenti approfondiremo l'applicazione di Spring Boot nelle attività pianificate e mostreremo come utilizzare le sue funzionalità per creare attività automatizzate efficienti e affidabili.
Un'attività pianificata è una parte di codice o programma che viene eseguita automaticamente a un orario prestabilito. Possono essere una tantum o periodici e vengono utilizzati per eseguire attività automatizzate come il backup dei dati, l'invio di notifiche, l'esecuzione di controlli pianificati, ecc.
Le attività pianificate sono fondamentali per mantenere il sistema attivo e funzionante e automatizzare i processi aziendali. Possono ridurre l’intervento manuale, aumentare l’efficienza e garantire la tempestività e l’accuratezza delle attività.
java.util.Timer
。@Scheduled
。java.util.Timer
Implementare le attività pianificateEcco un esempio che utilizza la libreria standard JavaTimer
Esempio di una semplice attività pianificata implementata dalla classe:
import java.util.Timer;
import java.util.TimerTask;
public class SimpleTimerTask {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
};
Timer timer = new Timer();
long delay = 0;
long intervalPeriod = 1000; // 间隔1秒执行一次
timer.scheduleAtFixedRate(task, delay, intervalPeriod);
}
}
Le espressioni cron sono un modo potente per configurare il tempo di esecuzione delle attività pianificate. Ecco un esempio di un'espressione cron che esegue un'attività ogni giorno all'una di notte:
0 0 1 * * ?
Lo Spring Boot è passato@Scheduled
Le annotazioni semplificano la configurazione e l'implementazione delle attività pianificate.Ecco un utilizzo@Scheduled
Esempio di attività pianificata Spring Boot con annotazioni:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportCurrentTime() {
System.out.println("当前时间:" System.currentTimeMillis());
}
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
public void scheduleTask() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
}
@Scheduled
annotazione@Scheduled
Si tratta di un'annotazione fornita da Spring per semplificare l'implementazione delle attività pianificate. Ti consente di creare metodi eseguiti periodicamente attraverso una semplice configurazione di annotazioni.
@Scheduled
Configurazione dell'annotazionefixedRate
: specificare un intervallo di tempo fisso (in millisecondi) tra due esecuzioni di attività.fixedDelay
: specificare un intervallo di tempo fisso tra la fine dell'esecuzione dell'ultima attività e l'inizio dell'attività successiva.initialDelay
: Specificare il tempo di ritardo prima che l'attività venga eseguita per la prima volta.cron
: utilizza le espressioni cron per specificare la pianificazione dell'esecuzione delle attività.fixedRate
L'esempio seguente mostra un metodo che viene eseguito ogni 5 secondi:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
@Scheduled(fixedRate = 5000)
public void taskWithFixedRate() {
System.out.println("任务执行:" LocalDateTime.now());
}
}
fixedDelay
L'esempio seguente mostra un metodo che viene eseguito 1 secondo dopo il termine dell'esecuzione dell'attività precedente:
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
L'esempio seguente mostra un metodo che viene eseguito i primi 10 secondi dopo l'avvio dell'applicazione e poi ogni 5 secondi:
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Le espressioni cron forniscono impostazioni temporali più complesse, consentendo di specificare tempi di esecuzione specifici. L'esempio seguente mostra un metodo che viene eseguito ogni giorno all'una di notte:
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
Le attività pianificate possono generare eccezioni, fornisce Spring@Async
annotazione per eseguire attività in modo asincrono e utilizzare@ExceptionHandler
per gestire le eccezioni.
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()