Κοινή χρήση τεχνολογίας

Σύνταξη προγραμματισμένων εργασιών στο Springboot

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Μέρος 1: Εισαγωγή

1.1 Η σημασία των προγραμματισμένων εργασιών

Στη σύγχρονη ανάπτυξη λογισμικού, οι προγραμματισμένες εργασίες αποτελούν βασικό συστατικό του αυτοματισμού εφαρμογών και της λειτουργικής αποτελεσματικότητας. Είτε πρόκειται για δημιουργία αντιγράφων ασφαλείας δεδομένων, έλεγχο υγείας του συστήματος, δημιουργία τακτικής αναφοράς ή αυτοματοποιημένες διαδικασίες που ενεργοποιούνται από τις δραστηριότητες των χρηστών, οι προγραμματισμένες εργασίες διαδραματίζουν απαραίτητο ρόλο. Εξασφαλίζουν τη συνέχεια της επιχειρηματικής λογικής και τις δυνατότητες αυτοσυντήρησης του συστήματος.

1.2 Εφαρμογή προγραμματισμένων εργασιών σε διαφορετικούς τομείς
  • Σύστημα Enterprise Resource Planning (ERP).: Οι προγραμματισμένες εργασίες μπορούν να χρησιμοποιηθούν για τη δημιουργία οικονομικών αναφορών, ενημερώσεων αποθέματος κ.λπ.
  • Σύστημα Διαχείρισης Περιεχομένου (CMS): Δημοσιεύστε περιεχόμενο τακτικά, διαγράψτε την προσωρινή μνήμη κ.λπ.
  • Σύστημα Διαχείρισης Σχέσεων Πελατών (CRM).: Στέλνετε τακτικά email μάρκετινγκ, υπενθυμίσεις παρακολούθησης πελατών κ.λπ.
  • Διαδικτυακή πλατφόρμα διαφήμισης: Προσαρμόστε τακτικά τις στρατηγικές διαφήμισης, βελτιστοποιήστε την προβολή διαφημίσεων κ.λπ.
1.3 Προκλήσεις στην υλοποίηση παραδοσιακών προγραμματισμένων εργασιών

Στο παραδοσιακό μοντέλο ανάπτυξης, η υλοποίηση προγραμματισμένων εργασιών απαιτεί συχνά τη στήριξη των προγραμματισμένων εργασιών του λειτουργικού συστήματος (όπως το crontab του Linux) ή τη σύνταξη σύνθετης επιχειρηματικής λογικής. Αυτές οι μέθοδοι έχουν πολλά μειονεκτήματα:

  • Σύνθετη διαμόρφωση: Απαιτεί μια εις βάθος κατανόηση του προγραμματιστή εργασιών του λειτουργικού συστήματος.
  • Δύσκολο στη συντήρηση: Οι εργασίες είναι διάσπαρτες σε διαφορετικά συστήματα και εφαρμογές, γεγονός που καθιστά δύσκολη την ομοιόμορφη διαχείριση και παρακολούθηση τους.
  • Κακή επεκτασιμότητα: Καθώς η επιχείρησή σας αναπτύσσεται, η προσθήκη ή η τροποποίηση εργασιών γίνεται πολύπλοκη και χρονοβόρα.
1.4 Λύση Spring Boot

Ως δημοφιλές πλαίσιο Java, το Spring Boot παρέχει έναν πιο κομψό και ολοκληρωμένο τρόπο υλοποίησης προγραμματισμένων εργασιών. Απλοποιεί τη διαμόρφωση και παρέχει πλούσια API, επιτρέποντας στους προγραμματιστές να ενσωματώνουν γρήγορα τις προγραμματισμένες λειτουργίες εργασιών σε εφαρμογές.

1.5 Υποστήριξη Spring Boot για προγραμματισμένες εργασίες

Πέρασε η ανοιξιάτικη μπότα@EnableSchedulingκαι@Scheduled Οι σχολιασμοί καθιστούν εξαιρετικά εύκολη τη σύνταξη και τη διαμόρφωση προγραμματισμένων εργασιών σε εφαρμογές Spring. Επιπλέον, το Spring Boot παρέχει επίσης ενοποίηση με το Spring Task Scheduler, το οποίο παρέχει υποστήριξη για πιο προηγμένες προγραμματισμένες απαιτήσεις εργασιών.

1.6 Γιατί να επιλέξετε το Spring Boot για την υλοποίηση προγραμματισμένων εργασιών
  • Απλοποιήστε τη διαμόρφωση: Οι προγραμματισμένες εργασίες μπορούν να υλοποιηθούν μέσω σχολιασμών και μικρής ποσότητας διαμόρφωσης.
  • Εύκολο στην ενσωμάτωση: Ομαλά ενσωματωμένο με το οικοσύστημα Spring, μπορείτε να επωφεληθείτε από άλλες λειτουργίες Spring, όπως διαχείριση συναλλαγών, ένεση εξάρτησης κ.λπ.
  • Ισχυρή κοινοτική υποστήριξη: Το Spring Boot έχει μια μεγάλη κοινότητα προγραμματιστών που παρέχει πολλούς πόρους και βέλτιστες πρακτικές.
  • Εύκολο στη δοκιμή: Οι προγραμματισμένες εργασίες του Spring Boot διευκολύνουν την εκτέλεση δοκιμών μονάδας και δοκιμής ενοποίησης.

Μέρος 2: Εισαγωγή στο Spring Boot

2.1 Επισκόπηση του Spring Boot

Το Spring Boot αναπτύχθηκε από την ομάδα Pivotal (τώρα μέρος του VMware) και είναι ένα αρθρωτό πλαίσιο ταχείας ανάπτυξης και ανάπτυξης που βασίζεται στο πλαίσιο Spring. Στόχος του είναι να απλοποιήσει την αρχική εγκατάσταση και τη διαδικασία ανάπτυξης των εφαρμογών Spring και να μειώσει το έργο διαμόρφωσης των προγραμματιστών παρέχοντας μια σειρά προεπιλεγμένων διαμορφώσεων.

2.2 Βασικά χαρακτηριστικά του Spring Boot
  • αυτόματη διαμόρφωση: Το Spring Boot μπορεί να διαμορφώσει αυτόματα τις εφαρμογές Spring με βάση τις εξαρτήσεις του έργου.
  • Λειτουργεί ανεξάρτητα: Οι εφαρμογές Spring Boot περιλαμβάνουν ενσωματωμένους διακομιστές HTTP (όπως Tomcat, Jetty ή Undertow) και δεν χρειάζεται να αναπτυχθούν σε εξωτερικούς διακομιστές.
  • Δεν απαιτείται διαμόρφωση XML: Η Spring Boot δεν απαιτεί τη χρήση αρχείων διαμόρφωσης XML, αν και εξακολουθεί να υποστηρίζει τη διαμόρφωση XML.
  • Υποστήριξη Microservice: Το Spring Boot είναι πολύ κατάλληλο για αρχιτεκτονική microservice και είναι εύκολο να κατασκευαστεί, να αναπτυχθεί και να επεκταθεί.
2.3 Μηχανισμός εκκίνησης Spring Boot

Η εφαρμογή Spring Boot ξεκινάειSpringApplication.run() Η μέθοδος που εφαρμόζεται, θα δημιουργήσει και θα διαμορφώσει αυτόματα το περιβάλλον εφαρμογής Spring. Το Spring Boot παρέχει επίσης μια διεπαφή γραμμής εντολών (CLI) και ένα τελικό σημείο Actuator για την παρακολούθηση και τη διαχείριση εφαρμογών.

2.4 Διαχείριση εξάρτησης Spring Boot

Πέρασε η ανοιξιάτικη μπόταspring-boot-starter-parent Παρέχει διαχείριση εξαρτήσεων και απλοποιεί τη διαμόρφωση των έργων Maven και Gradle. Προκαθορίζει τους αριθμούς εκδόσεων και τα εύρη εξαρτήσεων, διευκολύνοντας τη διαχείριση των διενέξεων εξαρτήσεων και του ελέγχου εκδόσεων.

2.5 Η κοινότητα του Spring Boot και η οικολογία plug-in

Το Spring Boot έχει μια ενεργή κοινότητα ανοιχτού κώδικα που παρέχει μεγάλο αριθμό προσθηκών και "Starters" που περιέχουν τις εξαρτήσεις που απαιτούνται για τη δημιουργία συγκεκριμένων λειτουργιών, όπως π.χ.spring-boot-starter-webΓια τη δημιουργία RESTful εφαρμογών.

2.6 Παράδειγμα: Δημιουργήστε μια απλή εφαρμογή Spring Boot

Ακολουθούν τα βήματα για τη δημιουργία μιας απλής εφαρμογής Spring Boot και το αντίστοιχο δείγμα κώδικα:

  1. Δημιουργία δομής έργου: Χρησιμοποιήστε το Spring Initializr (https://start.spring.io/) για να δημιουργήσετε γρήγορα τη δομή του έργου.
  2. Προσθήκη εξαρτήσεων: Επιλέξτε τα απαιτούμενα Starters, για παράδειγμαspring-boot-starter-web
  3. Γράψτε την κύρια τάξη εφαρμογής
    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);
        }
    }
    
  4. Δημιουργήστε έναν ελεγκτή REST
    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!";
        }
    }
    
2.7 Μέθοδος ανάπτυξης Spring Boot
  • Συσκευασμένο ως JAR: Η εφαρμογή Spring Boot μπορεί να συσκευαστεί σε ένα εκτελέσιμο αρχείο JAR μέσωjava -jarΕκτελείται η εντολή.
  • Ανάπτυξη εμπορευματοκιβωτίων: Οι εφαρμογές Spring Boot είναι κατάλληλες για τεχνολογίες μεταφοράς εμπορευματοκιβωτίων όπως το Docker και είναι εύκολο να αναπτυχθούν σε περιβάλλοντα cloud.
2.8 Η σχέση μεταξύ Spring Boot και Spring Framework

Το Spring Boot δεν αντικαθιστά το Spring Framework, αλλά μια μέθοδο ταχείας ανάπτυξης που βασίζεται στο Spring Framework. Παρέχει έναν γρήγορο τρόπο για να ξεκινήσετε τις εφαρμογές Spring, διατηρώντας παράλληλα όλες τις δυνατότητες και την ευελιξία του Spring Framework.

2.9 Γιατί να επιλέξετε το Spring Boot;
  • γρήγορη ανάπτυξη: Η αυτόματη διαμόρφωση και η απλοποιημένη διαμόρφωση του Spring Boot κάνουν την ανάπτυξη ταχύτερη.
  • Εύκολο στην ανάπτυξη: Ο ενσωματωμένος διακομιστής HTTP και η υποστήριξη κοντέινερ διευκολύνουν την ανάπτυξη.
  • κοινοτική υποστήριξη: Η κοινότητα Spring Boot παρέχει πληθώρα πόρων, προσθηκών και βέλτιστων πρακτικών.
2.10 Συμπέρασμα

Το Spring Boot είναι ένα πλαίσιο σχεδιασμένο για σύγχρονη ανάπτυξη Java. Απλοποιεί τη διαμόρφωση και παρέχει μια σειρά από out-of-the-box λειτουργίες, επιτρέποντας στους προγραμματιστές να επικεντρωθούν στην εφαρμογή της επιχειρηματικής λογικής και όχι στην κατασκευή υποδομής. Στα επόμενα κεφάλαια, θα εμβαθύνουμε στην εφαρμογή του Spring Boot σε προγραμματισμένες εργασίες και θα δείξουμε πώς να χρησιμοποιήσετε τις δυνατότητές του για να δημιουργήσετε αποτελεσματικές και αξιόπιστες αυτοματοποιημένες εργασίες.

Μέρος 3: Βασικές έννοιες προγραμματισμένων εργασιών

3.1 Ορισμός προγραμματισμένων εργασιών

Μια προγραμματισμένη εργασία είναι ένα κομμάτι κώδικα ή πρόγραμμα που εκτελείται αυτόματα σε προκαθορισμένο χρόνο. Μπορούν να είναι εφάπαξ ή περιοδικές και χρησιμοποιούνται για την εκτέλεση αυτοματοποιημένων εργασιών όπως δημιουργία αντιγράφων ασφαλείας δεδομένων, αποστολή ειδοποιήσεων, εκτέλεση προγραμματισμένων ελέγχων κ.λπ.

3.2 Τύποι προγραμματισμένων εργασιών
  • εφάπαξ εργασία: Εκτελείται μόνο μία φορά, συνήθως για συγκεκριμένες λειτουργίες προετοιμασίας ή καθαρισμού.
  • περιοδικές εργασίες: Εκτελείται επανειλημμένα σε ένα συγκεκριμένο χρονικό διάστημα, το οποίο μπορεί να είναι ένα σταθερό διάστημα ή ένας χρόνος που βασίζεται σε ημερολόγιο.
3.3 Σενάρια εφαρμογής προγραμματισμένων εργασιών
  • αντίγραφο ασφαλείας δεδομένων: Δημιουργήστε τακτικά αντίγραφα ασφαλείας της βάσης δεδομένων για να διασφαλίσετε την ασφάλεια των δεδομένων.
  • Δημιουργία αναφορών: Δημιουργήστε τακτικές εκθέσεις επιχειρήσεων για να βοηθήσετε στη λήψη αποφάσεων.
  • Παρακολούθηση συστήματος: Ελέγχετε περιοδικά την κατάσταση του συστήματος για να ανακαλύπτετε και να επιλύετε προβλήματα εγκαίρως.
  • Ειδοποίηση χρήστη: Στείλτε υπενθυμίσεις ή ειδοποιήσεις με βάση τη συμπεριφορά των χρηστών ή συγκεκριμένα συμβάντα.
3.4 Η σημασία των προγραμματισμένων εργασιών

Οι προγραμματισμένες εργασίες είναι κρίσιμες για τη διατήρηση του συστήματός σας σε λειτουργία και την αυτοματοποίηση των επιχειρηματικών διαδικασιών. Μπορούν να μειώσουν τη χειρωνακτική παρέμβαση, να αυξήσουν την αποτελεσματικότητα και να εξασφαλίσουν την επικαιρότητα και την ακρίβεια των εργασιών.

3.5 Προκλήσεις στην υλοποίηση προγραμματισμένων εργασιών
  • ακρίβεια χρόνου: Βεβαιωθείτε ότι οι εργασίες εκτελούνται με ακρίβεια την προγραμματισμένη ώρα.
  • Διαχείριση σφαλμάτων: Να χειριστεί σωστά τα σφάλματα που ενδέχεται να προκύψουν κατά την εκτέλεση.
  • Διαχείριση πόρων: Κατανέμετε εύλογα πόρους για να αποφύγετε επιπτώσεις στην απόδοση του συστήματος κατά την εκτέλεση εργασιών.
3.6 Τρόπος υλοποίησης προγραμματισμένων εργασιών
  • επίπεδο λειτουργικού συστήματος: Χρησιμοποιήστε το crontab ή το Windows Task Scheduler.
  • επίπεδο γλώσσας προγραμματισμού: Χρησιμοποιήστε μια βιβλιοθήκη ή πλαίσιο συγκεκριμένης γλώσσας, όπως η Javajava.util.Timer
  • Επίπεδο πλαισίου εφαρμογής: Χρησιμοποιήστε την προγραμματισμένη υποστήριξη εργασιών που παρέχεται από το πλαίσιο, όπως το Spring@Scheduled
3.7 Παράδειγμα: Χρήση Javajava.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);
    }
}
3.8 Παράδειγμα: Χρήση εκφράσεων cron

Οι εκφράσεις Cron είναι ένας ισχυρός τρόπος για τη διαμόρφωση του χρόνου εκτέλεσης των προγραμματισμένων εργασιών. Ακολουθεί ένα παράδειγμα έκφρασης cron που εκτελεί μια εργασία κάθε μέρα στη 1 π.μ.:

0 0 1 * * ?
3.9 Προγραμματισμένες εργασίες στο Spring Boot

Πέρασε η ανοιξιάτικη μπότα@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());
    }
}
3.10 Παρακολούθηση και διαχείριση προγραμματισμένων εργασιών
  • ξύλευση: Καταγράψτε την εκτέλεση εργασιών για να διευκολύνετε την παρακολούθηση προβλημάτων και την παρακολούθηση της απόδοσης.
  • εξέταση υγείας: Ελέγχετε τακτικά την κατάσταση της υγείας των προγραμματισμένων εργασιών για να βεβαιωθείτε ότι εκτελούνται κανονικά.

Μέρος 4: Εφαρμογή εργασιών χρονισμού στο Spring Boot

4.1 Χρήση@Scheduledσχόλιο

@Scheduled Είναι ένας σχολιασμός που παρέχεται από την Spring για να απλοποιήσει την υλοποίηση προγραμματισμένων εργασιών. Σας επιτρέπει να δημιουργείτε περιοδικά εκτελούμενες μεθόδους μέσω απλής διαμόρφωσης σχολιασμού.

4.2 @ScheduledΔιαμόρφωση σχολιασμού
  • fixedRate: Καθορίστε ένα σταθερό χρονικό διάστημα (σε χιλιοστά του δευτερολέπτου) μεταξύ δύο εκτελέσεων εργασιών.
  • fixedDelay: Καθορίστε ένα σταθερό χρονικό διάστημα μεταξύ του τέλους της τελευταίας εκτέλεσης εργασίας και της έναρξης της επόμενης εργασίας.
  • initialDelay: Καθορίστε το χρόνο καθυστέρησης πριν εκτελεστεί η εργασία για πρώτη φορά.
  • cron: Χρησιμοποιήστε εκφράσεις cron για να καθορίσετε το χρονοδιάγραμμα για την εκτέλεση εργασιών.
4.3 Παράδειγμα: Χρήση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());
    }
}
4.4 Παράδειγμα: ΧρήσηfixedDelay

Το ακόλουθο παράδειγμα δείχνει μια μέθοδο που εκτελείται 1 δευτερόλεπτο μετά την ολοκλήρωση της εκτέλεσης της προηγούμενης εργασίας:

@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
    System.out.println("任务执行:"   LocalDateTime.now());
}
4.5 Παράδειγμα: ΧρήσηinitialDelay

Το παρακάτω παράδειγμα δείχνει μια μέθοδο που εκτελείται πρώτα 10 δευτερόλεπτα μετά την έναρξη της εφαρμογής και μετά κάθε 5 δευτερόλεπτα:

@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
    System.out.println("任务执行:"   LocalDateTime.now());
}
4.6 Χρήση εκφράσεων cron

Οι εκφράσεις Cron παρέχουν πιο σύνθετες ρυθμίσεις χρόνου, επιτρέποντάς σας να καθορίσετε συγκεκριμένους χρόνους εκτέλεσης. Το παρακάτω παράδειγμα δείχνει μια μέθοδο που εκτελείται κάθε μέρα στη 1 π.μ.:

@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
    System.out.println("任务执行:"   LocalDateTime.now());
}
4.7 Χειρισμός εξαιρέσεων εκτέλεσης εργασιών

Οι προγραμματισμένες εργασίες ενδέχεται να δημιουργούν εξαιρέσεις, προβλέπει η Άνοιξη@Asyncσχολιασμό για την ασύγχρονη εκτέλεση εργασιών και χρήση@ExceptionHandlerνα χειριστεί τις εξαιρέσεις.

@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
    if (Math.random()