Technology sharing

SpringBoot cotidie: @Scheduled exsecutionem fit semel cum servitio incipit

2024-07-12

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


Loquentes de operibus scheduled, cogitare debemus de @Scheduled, Quartz et XXI-JOB. Sed aliqua officia singula vel parva incepta recta uti possunt @Scheduled ad opera asynchrona efficiendi pro opportunitate et velocitate. Ideo thema necessaria huius articuli prorogantur.

Cum @Scheduled in incepto adhibetur, quomodo definitum opus asynchronum in antecessum perfici potest cum inceptum est consilium?

1. explicatio @Scheduled

@Scheduled annotationem plures parametri sustinet ad tempus exsecutionis negotium molliter moderantum.

  • cron : Cron dictio, quae accurate regere potest secundas, minutas, horas, dies, menses, septimanas, &c.
    Insert imaginem descriptionis hic
  • zona: Zonam tempus accipite, ut Asia/Shanghai, tempus zonam vulgo utimur.
  • fixedDelay: Quousque post ultimam executionem temporis complementum iterum exsecutioni mandabitur. Ut @Scheduled(fixedDelay = 5000)
  • fixedDelayString: idem significat ac fixDelay, sed in forma chordae. Sola differentia est quod placeholders sustinet, ut @Scheduled(fixedDelayString = "5000")
  • fixedRate: Quousque post ultimum initium executionis temporis, ut @Scheduled(fixedRate = 5000)
  • fixedRateString: Eadem significatione ac fixRate, sed in forma chordae. Tantum interest, ut placeholders sustineantur.
  • initialDelay: Quousque primum supplicium differre. Exempli gratia, prima mora est 1 secunda ante executionem. Post hoc, fiet omnis 5 secundis secundum regulam fixam )
  • initialDelayString: idem significat ac initialDelayString, sed in forma chordae. Tantum interest, ut placeholders sustineantur.

2. Logica exsecutio

1. crea in scheduled negotium ratione methodi

/**
 * @Author 码至终章
 * @Version 1.0
 */
@Component
public class ScheduledTest {

    @Scheduled(cron = "* 1 * * * ?")
    public void task1() throws Exception{
        System.out.println("task1 执行: " + Thread.currentThread() + "-" + DateTime.now());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2. Novam startup supplicium classis

Hoc genus maxime vocat certum opus modum manually ad startup

/**
 * @Author 码至终章
 * @Version 1.0
 */
@Component
public class StartupTasks {

    private final ScheduledTest scheduledTasks;

    public StartupTasks(ScheduledTest scheduledTasks) {
        this.scheduledTasks = scheduledTasks;
    }

    @PostConstruct
    public void startUp() {
        try {
            System.out.println("服务启动执行任务");
            scheduledTasks.task1();
        }catch (Exception e){
			e.printStackTrace();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

Nota: memento @EnableScheduling satus classi addere ut negotium scheduled futurum sit.

3. Test eventus

Post officium incipit videre Typographiae notitia
Insert imaginem descriptionis hic