Penjadualan dengan @Scheduled
Jalankan tugas pada kadar tetap atau jadual cron.
Penjadualan dengan @Scheduled ialah pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Perkhidmatan Mikro dan API REST Spring Boot 4, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Perkhidmatan Mikro dan API REST Spring Boot 4 merangkumi sejumlah 4 pelajaran.
Penjadualan dalam Spring Boot
Spring Boot membolehkan anda menjalankan kaedah secara automatik mengikut jadual tanpa daemon cron luaran. Anda menganotasi kaedah dengan @Scheduled dan Spring akan memanggilnya berulang kali di latar belakang.
- Sesuai untuk kerja pembersihan, pengundian dan penjanaan laporan
- Tiada infrastruktur tambahan diperlukan
Mendayakan penjadualan
Penjadualan dimatikan secara lalai. Hidupkannya dengan @EnableScheduling pada kelas konfigurasi, biasanya kelas aplikasi utama.
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableScheduling
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}fixedRate
fixedRate menjalankan kaedah pada selang tetap yang diukur daripada permulaan satu pelaksanaan hingga permulaan pelaksanaan seterusnya. Nilainya dalam milisaat.
@Component
public class RateTask {
@Scheduled(fixedRate = 5000)
public void report() {
System.out.println("Runs every 5 seconds");
}
}fixedDelay
fixedDelay menunggu sela tetap selepas pelaksanaan sebelumnya selesai sebelum memulakan pelaksanaan seterusnya. Gunakannya apabila pelaksanaan tidak boleh bertindih.
@Scheduled(fixedDelay = 5000)
public void process() {
// next run starts 5s AFTER this one ends
doWork();
}fixedRate berbanding fixedDelay
Perbezaan utama ialah titik rujukannya:
fixedRate= selang antara waktu mula (boleh bertindih jika pelaksanaan lambat)fixedDelay= sela antara akhir pelaksanaan dan permulaan seterusnya (tidak pernah bertindih)
initialDelay
initialDelay melengahkan pelaksanaan pertama selepas permulaan aplikasi. Gabungkannya dengan fixedRate atau fixedDelay untuk mengelakkan pelaksanaan serta-merta semasa but.
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void warmThenRun() {
// waits 10s after startup, then every 5s
}ungkapan cron
Untuk penjadualan berdasarkan kalendar, gunakan cron. Cron Spring mempunyai 6 medan: saat, minit, jam, hari dalam bulan, bulan dan hari dalam minggu.
@Scheduled(cron = "0 0 9 * * MON-FRI")
public void weekdayMorning() {
// 09:00:00 every weekday
}Membaca medan cron
Aksara asterisk * bermaksud "setiap nilai". ? boleh digunakan pada hari dalam bulan atau hari dalam minggu apabila salah satunya tidak ditentukan. Julat (MON-FRI), senarai (1,15) dan langkah (*/10) disokong.
@Scheduled(cron = "*/30 * * * * *") // every 30 seconds
public void everyHalfMinute() { }
@Scheduled(cron = "0 0 0 1 * *") // midnight on the 1st of every month
public void monthly() { }Zon waktu
Secara lalai, cron menggunakan zon waktu pelayan. Tetapkan zone supaya jadual menjadi jelas dan konsisten merentas persekitaran.
@Scheduled(cron = "0 0 8 * * *", zone = "Europe/Istanbul")
public void eightAmIstanbul() { }Mengasingkan Jadual
Selang yang ditetapkan terus dalam kod tidak fleksibel. Gunakan ruang letak sifat supaya jadual boleh diubah mengikut persekitaran tanpa penyusunan semula.
@Scheduled(fixedRateString = "${app.report.rate:5000}")
public void report() { }
// application.yml
// app:
// report:
// rate: 10000Perangkap Penjadualan
Secara lalai, satu utas menjalankan semua tugas berjadual, jadi tugas yang lambat boleh melengahkan tugas lain. Untuk pelaksanaan selari, konfigurasikan ThreadPoolTaskScheduler. Selain itu, pastikan kaedah berjadual idempoten sekiranya berlaku permulaan semula.
Semakan Pantas
Uji pemahaman anda tentang penjadualan.
Ringkasan
Anda telah mempelajari cara menjadualkan kerja dalam Spring Boot:
@EnableSchedulingmenghidupkan ciri inifixedRate= mula-ke-mula,fixedDelay= tamat-ke-mulacronmengendalikan jadual kalendar; tetapkanzoneuntuk kejelasan- Asingkan selang menggunakan ruang letak sifat
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 24
- Pelajaran
- 93
Soalan Lazim
Adakah pelajaran “Penjadualan dengan @Scheduled” percuma?
Ya — teks penuh “Penjadualan dengan @Scheduled” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Perkhidmatan Mikro dan API REST Spring Boot 4, tingkat taraf kepada CoddyKit PRO. Kursus Perkhidmatan Mikro dan API REST Spring Boot 4 merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Penjadualan dengan @Scheduled”?
Jalankan tugas pada kadar tetap atau jadual cron. Anda berlatih Perkhidmatan Mikro dan API REST Spring Boot 4 menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Perkhidmatan Mikro dan API REST Spring Boot 4?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Penjadualan dengan @Scheduled” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 ini?
Ya. Setiap pelajaran Perkhidmatan Mikro dan API REST Spring Boot 4 menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Penjadualan dengan @Scheduled
- Kerja dan Langkah Spring Batch
- Pembaca, Pemproses dan Penulis
- Pemulaan Semula dan Pengendalian Ralat