Pada Musim Bunga, anotasi @Scheduled biasanya digunakan untuk menjadualkan tugas pada selang masa tetap. Walau bagaimanapun, kadangkala anda mungkin perlu melaraskan jadual secara dinamik tanpa menggunakan semula aplikasi anda. Ini memerlukan penggunaan pendekatan tersuai.
Satu penyelesaian ialah menggunakan Pencetus, membolehkan anda mengira masa pelaksanaan seterusnya dengan cepat.
Pertimbangkan kod konfigurasi berikut:
@Configuration @EnableScheduling public class MyAppConfig implements SchedulingConfigurer { @Autowired Environment env; @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskExecutor()); taskRegistrar.addTriggerTask( new Runnable() { @Override public void run() { ... } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { ... // Calculate next execution time dynamically ... } } ); } }
Antara muka Pencetus mentakrifkan NextExecutionTime kaedah, yang boleh anda gunakan untuk mengira masa pelaksanaan seterusnya berdasarkan keperluan anda. Dalam contoh ini, kelas Kalendar digunakan untuk mengira masa pelaksanaan seterusnya berdasarkan nilai yang disimpan dalam sifat persekitaran myRate.
Dengan menggunakan Trigger, anda boleh melaraskan jadual tugas anda secara dinamik tanpa memerlukan penempatan semula. Ini memberikan fleksibiliti dan kawalan ke atas operasi berjadual anda, membolehkan anda menyesuaikan diri dengan keperluan yang berubah-ubah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaraskan Kadar Tetap Pekerjaan Berjadual secara Dinamik pada Musim Bunga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!