2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Στη σύγχρονη ανάπτυξη λογισμικού, οι προγραμματισμένες εργασίες αποτελούν βασικό συστατικό του αυτοματισμού εφαρμογών και της λειτουργικής αποτελεσματικότητας. Είτε πρόκειται για δημιουργία αντιγράφων ασφαλείας δεδομένων, έλεγχο υγείας του συστήματος, δημιουργία τακτικής αναφοράς ή αυτοματοποιημένες διαδικασίες που ενεργοποιούνται από τις δραστηριότητες των χρηστών, οι προγραμματισμένες εργασίες διαδραματίζουν απαραίτητο ρόλο. Εξασφαλίζουν τη συνέχεια της επιχειρηματικής λογικής και τις δυνατότητες αυτοσυντήρησης του συστήματος.
Στο παραδοσιακό μοντέλο ανάπτυξης, η υλοποίηση προγραμματισμένων εργασιών απαιτεί συχνά τη στήριξη των προγραμματισμένων εργασιών του λειτουργικού συστήματος (όπως το crontab του Linux) ή τη σύνταξη σύνθετης επιχειρηματικής λογικής. Αυτές οι μέθοδοι έχουν πολλά μειονεκτήματα:
Ως δημοφιλές πλαίσιο Java, το Spring Boot παρέχει έναν πιο κομψό και ολοκληρωμένο τρόπο υλοποίησης προγραμματισμένων εργασιών. Απλοποιεί τη διαμόρφωση και παρέχει πλούσια API, επιτρέποντας στους προγραμματιστές να ενσωματώνουν γρήγορα τις προγραμματισμένες λειτουργίες εργασιών σε εφαρμογές.
Πέρασε η ανοιξιάτικη μπότα@EnableScheduling
και@Scheduled
Οι σχολιασμοί καθιστούν εξαιρετικά εύκολη τη σύνταξη και τη διαμόρφωση προγραμματισμένων εργασιών σε εφαρμογές Spring. Επιπλέον, το Spring Boot παρέχει επίσης ενοποίηση με το Spring Task Scheduler, το οποίο παρέχει υποστήριξη για πιο προηγμένες προγραμματισμένες απαιτήσεις εργασιών.
Το Spring Boot αναπτύχθηκε από την ομάδα Pivotal (τώρα μέρος του VMware) και είναι ένα αρθρωτό πλαίσιο ταχείας ανάπτυξης και ανάπτυξης που βασίζεται στο πλαίσιο Spring. Στόχος του είναι να απλοποιήσει την αρχική εγκατάσταση και τη διαδικασία ανάπτυξης των εφαρμογών Spring και να μειώσει το έργο διαμόρφωσης των προγραμματιστών παρέχοντας μια σειρά προεπιλεγμένων διαμορφώσεων.
Η εφαρμογή Spring Boot ξεκινάειSpringApplication.run()
Η μέθοδος που εφαρμόζεται, θα δημιουργήσει και θα διαμορφώσει αυτόματα το περιβάλλον εφαρμογής Spring. Το Spring Boot παρέχει επίσης μια διεπαφή γραμμής εντολών (CLI) και ένα τελικό σημείο Actuator για την παρακολούθηση και τη διαχείριση εφαρμογών.
Πέρασε η ανοιξιάτικη μπόταspring-boot-starter-parent
Παρέχει διαχείριση εξαρτήσεων και απλοποιεί τη διαμόρφωση των έργων Maven και Gradle. Προκαθορίζει τους αριθμούς εκδόσεων και τα εύρη εξαρτήσεων, διευκολύνοντας τη διαχείριση των διενέξεων εξαρτήσεων και του ελέγχου εκδόσεων.
Το Spring Boot έχει μια ενεργή κοινότητα ανοιχτού κώδικα που παρέχει μεγάλο αριθμό προσθηκών και "Starters" που περιέχουν τις εξαρτήσεις που απαιτούνται για τη δημιουργία συγκεκριμένων λειτουργιών, όπως π.χ.spring-boot-starter-web
Για τη δημιουργία RESTful εφαρμογών.
Ακολουθούν τα βήματα για τη δημιουργία μιας απλής εφαρμογής Spring Boot και το αντίστοιχο δείγμα κώδικα:
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
Εκτελείται η εντολή.Το Spring Boot δεν αντικαθιστά το Spring Framework, αλλά μια μέθοδο ταχείας ανάπτυξης που βασίζεται στο Spring Framework. Παρέχει έναν γρήγορο τρόπο για να ξεκινήσετε τις εφαρμογές Spring, διατηρώντας παράλληλα όλες τις δυνατότητες και την ευελιξία του Spring Framework.
Το Spring Boot είναι ένα πλαίσιο σχεδιασμένο για σύγχρονη ανάπτυξη Java. Απλοποιεί τη διαμόρφωση και παρέχει μια σειρά από out-of-the-box λειτουργίες, επιτρέποντας στους προγραμματιστές να επικεντρωθούν στην εφαρμογή της επιχειρηματικής λογικής και όχι στην κατασκευή υποδομής. Στα επόμενα κεφάλαια, θα εμβαθύνουμε στην εφαρμογή του Spring Boot σε προγραμματισμένες εργασίες και θα δείξουμε πώς να χρησιμοποιήσετε τις δυνατότητές του για να δημιουργήσετε αποτελεσματικές και αξιόπιστες αυτοματοποιημένες εργασίες.
Μια προγραμματισμένη εργασία είναι ένα κομμάτι κώδικα ή πρόγραμμα που εκτελείται αυτόματα σε προκαθορισμένο χρόνο. Μπορούν να είναι εφάπαξ ή περιοδικές και χρησιμοποιούνται για την εκτέλεση αυτοματοποιημένων εργασιών όπως δημιουργία αντιγράφων ασφαλείας δεδομένων, αποστολή ειδοποιήσεων, εκτέλεση προγραμματισμένων ελέγχων κ.λπ.
Οι προγραμματισμένες εργασίες είναι κρίσιμες για τη διατήρηση του συστήματός σας σε λειτουργία και την αυτοματοποίηση των επιχειρηματικών διαδικασιών. Μπορούν να μειώσουν τη χειρωνακτική παρέμβαση, να αυξήσουν την αποτελεσματικότητα και να εξασφαλίσουν την επικαιρότητα και την ακρίβεια των εργασιών.
java.util.Timer
。@Scheduled
。java.util.Timer
Εφαρμογή προγραμματισμένων εργασιώνΑκολουθεί ένα παράδειγμα χρησιμοποιώντας την τυπική βιβλιοθήκη JavaTimer
Παράδειγμα απλής προγραμματισμένης εργασίας που υλοποιείται ανά τάξη:
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);
}
}
Οι εκφράσεις Cron είναι ένας ισχυρός τρόπος για τη διαμόρφωση του χρόνου εκτέλεσης των προγραμματισμένων εργασιών. Ακολουθεί ένα παράδειγμα έκφρασης cron που εκτελεί μια εργασία κάθε μέρα στη 1 π.μ.:
0 0 1 * * ?
Πέρασε η ανοιξιάτικη μπότα@Scheduled
Οι σχολιασμοί απλοποιούν τη διαμόρφωση και την υλοποίηση προγραμματισμένων εργασιών.Εδώ είναι μια χρήση@Scheduled
Παράδειγμα προγραμματισμένης εργασίας σχολιασμένης Spring Boot:
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
σχόλιο@Scheduled
Είναι ένας σχολιασμός που παρέχεται από την Spring για να απλοποιήσει την υλοποίηση προγραμματισμένων εργασιών. Σας επιτρέπει να δημιουργείτε περιοδικά εκτελούμενες μεθόδους μέσω απλής διαμόρφωσης σχολιασμού.
@Scheduled
Διαμόρφωση σχολιασμούfixedRate
: Καθορίστε ένα σταθερό χρονικό διάστημα (σε χιλιοστά του δευτερολέπτου) μεταξύ δύο εκτελέσεων εργασιών.fixedDelay
: Καθορίστε ένα σταθερό χρονικό διάστημα μεταξύ του τέλους της τελευταίας εκτέλεσης εργασίας και της έναρξης της επόμενης εργασίας.initialDelay
: Καθορίστε το χρόνο καθυστέρησης πριν εκτελεστεί η εργασία για πρώτη φορά.cron
: Χρησιμοποιήστε εκφράσεις cron για να καθορίσετε το χρονοδιάγραμμα για την εκτέλεση εργασιών.fixedRate
Το ακόλουθο παράδειγμα δείχνει μια μέθοδο που εκτελείται κάθε 5 δευτερόλεπτα:
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
Το ακόλουθο παράδειγμα δείχνει μια μέθοδο που εκτελείται 1 δευτερόλεπτο μετά την ολοκλήρωση της εκτέλεσης της προηγούμενης εργασίας:
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
Το παρακάτω παράδειγμα δείχνει μια μέθοδο που εκτελείται πρώτα 10 δευτερόλεπτα μετά την έναρξη της εφαρμογής και μετά κάθε 5 δευτερόλεπτα:
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Οι εκφράσεις Cron παρέχουν πιο σύνθετες ρυθμίσεις χρόνου, επιτρέποντάς σας να καθορίσετε συγκεκριμένους χρόνους εκτέλεσης. Το παρακάτω παράδειγμα δείχνει μια μέθοδο που εκτελείται κάθε μέρα στη 1 π.μ.:
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
Οι προγραμματισμένες εργασίες ενδέχεται να δημιουργούν εξαιρέσεις, προβλέπει η Άνοιξη@Async
σχολιασμό για την ασύγχρονη εκτέλεση εργασιών και χρήση@ExceptionHandler
να χειριστεί τις εξαιρέσεις.
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()